2017-06-20 2 views
0

このクエリの構文が正しいとは言えません。 Product.phpに続いてLaravelには多くのグループがあります

Offer.php

public function user() 
{ 
    return $this->belongsTo('App\User', 'buyer_id'); 
} 
public function product(){ 
    return $this->belongsTo('App\Product'); 
} 

でそう

そしてUser.php

public function offers() 
{ 
    return $this->hasMany('App\Offer', 'buyer_id'); 
} 

中:

は基本的に、私はオファーがユーザによって行われている記載されている製品を、持っています

public function offer() 
{ 
    return $this->hasMany('App\Offer'); 
} 

私はそれらを作成したユーザーによってオファーをグループ化し、オファーが反対している製品のカテゴリ別にグループ化する必要があります。

誰も私がこれらを正しくグループ化できるアイデアはありますか?

+0

私はよく分かりませんが、https://laravel.com/docs/5.4/eloquent-relationships#has-多くを介して –

+0

私はあなたがこのリンクに従うべきだと思うhttps://softonsofa.com/tweaking-eloquent-relations-how-to-get-hasmany-relation-count-efficiently/ –

答えて

1

Query Builderとお試しください。このように(あなたのテーブルの構造はわかりません):

$offers = DB::table('offers') 
      ->joinLeft('users','users.id','=','offers.buyer_id') 
      ->joinLeft('products','products.id','=','offers.product_id') 
      ->groupBY('users.id','products.category_id') 
      ->get(); 
+0

私は基本的にそれを少し修正したそれは未加工のSQL(申し訳ありません)ですが、このエラーが表示されます:SELECTリストの式#1はGROUP BY句にはなく、GROUP BY句のカラムに機能的に依存しない非集約カラム 'bmoty.offers.id' ;これは、実行時にsql_mode = only_full_group_byと互換性がありません。SELECT * FROMはLEFT JOINユーザーに対してLEFT JOINユーザーを提供します。users.id = offers.buyer_id left products products.id = offers.product_id group by products.category; – iLC

+0

@iLC申し訳ありませんが、私はあなたのテーブルの構造とあなたのsql-query =>が正しいSQLクエリを書く方法とエラーが発生する理由を言うことができません。 * IMHO、この場合はEloquentを使用しないでください。これはraw SQLクエリを使用して行われます。 – voodoo417

関連する問題