我遇到了一些关系问题。我有以下情况
产品:
public function catalogues()
{
return $this->belongsToMany('App\Catalogue');
}
public function category()
{
return $this->belongsTo('App\Category');
}
类别:
public function products()
{
return $this->hasMany('App\Product');
}
目录:
public function products()
{
return $this->belongsToMany('App\Product');
}
使用单个查询,我需要获取包含属于某个目录的产品的所有类别。我怎样才能实现它?
答案 0 :(得分:2)
使用whereHas()
:
Category::whereHas('products.catalogues', function($q) use($catalogueId) {
$q->where('catalogues.id', $catalogueId);
})
->get();
或者:
Category::whereHas('products', function($q) use($catalogueId) {
$q->whereHas('catalogues', function($q) use($catalogueId) {
$q->where('id', $catalogueId);
})
})
->get();
答案 1 :(得分:0)
您需要whereHas
和
Category::whereHas('products')
->with(['products' => function($query) use ($id){
$query->with('catalogues' => function($query) use ($id){
$query->where('catalogues.id',$id);
});
}])
->get();
希望这有帮助。