按关系分组laravel

时间:2018-12-02 09:51:07

标签: php laravel

我有Model Category和产品,Model Category有2种关系:

public function children()
{
    return $this->hasMany(self::class, 'parent_id');
}

public function parent()
{
    return $this->belongsTo(self::class, 'parent_id')->withoutGlobalScope('active');
}

模型产品具有:

public function category()
{
    return $this->belongsTo(Category::class);
}

我需要按类别分组产品,我有代码:

$products = Product::with('category')->whereHas('category', function ($query) 
          {
            $query->where('parent_id', null); //for main categories
        });

在刀片I中,我通过:

@forelse($products->groupBy('category.title') as $title => $prods)

如何检查父类别中的产品是否为空,以及如何写具有父类别标题的子类别中的产品?现在我得到的结果是空的。.

1 个答案:

答案 0 :(得分:0)

不要在视图中进行分组...请尝试以下操作:

$products = Product::with('category')->whereHas('category', function ($query) 
      {
        $query->where('parent_id', null); //for main categories
      })
->get()
->groupBy('category.title');

也许您也必须执行与该查询相反的操作:

$categories = Category::withoutGlobalScope('active')
             ->where('parent_id',null)
             ->with('products')
             ->get();

记住要添加与类别模型有hasMany关系的产品