2017-06-20 55 views
0

我似乎无法得到这个查询的语法正确。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'); 
} 

Product.php然后

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子句中,并包含非聚集列'bmoty.offers.id',它在功能上不依赖于GROUP BY子句中的列;这与运行时与sql_mode = only_full_group_by不兼容:SELECT * FROM提供了LEFT JOIN用户ON users.id = offers.buyer_id left join products products.id = offers.product_id group by products.category; – iLC

+0

@iLC对不起,我不知道你的表结构和你的sql-query =>不能准确地说出如何编写正确的sql查询以及为什么会出错。 *恕我直言,在这种情况下不要使用Eloquent:通过原始的sql查询来设置它。 – voodoo417