我有2张桌子。
产品 品牌
我试图以最多的产品回归十大品牌模型。
我试过了。
Product::select('brand', DB::raw('count(brand) as count'))->groupBy('brand')->orderBy('count','desc')->take(10)->get();
但是这不会返回洞模型而只返回
我也试过
return $brands = Brand::whereHas('products', function($q) {
$q->count() > 10;
})->get();
但我收到错误:
SQLSTATE [42S22]:未找到列:1054未知列'brands.id' 'where子句'(SQL:从
products
选择count(*)作为聚合 其中brands
。id
=products
。brand
)
我的品牌模型
public function products()
{
return $this->hasMany('App\Product','brand');
}
我的商品型号
public function manuf()
{
return $this->belongsTo('App\Brand','brand');
}
答案 0 :(得分:6)
试试这个:
$brands = Brands::has('products', '>' , 10)->with('products')->get();
答案 1 :(得分:2)
如果你至少使用Laravel 5.3,你应该可以使用withCount
method完成此任务:
Brand::withCount('products')->orderBy('products_count', 'DESC')->take(10)->get();
products
是您关系的名称。这会在您的查询中为您提供一个新字段products_count
,您可以订购。