Laravel - Eloquent - 相关数量大于的回报

时间:2017-03-03 17:06:44

标签: php laravel laravel-5 eloquent

我有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(*)作为聚合   其中brandsid = productsbrand

我的品牌模型

public function products()
    {
        return $this->hasMany('App\Product','brand');
    }

我的商品型号

public function manuf()
    {
        return $this->belongsTo('App\Brand','brand');
    }

2 个答案:

答案 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,您可以订购。