我正在尝试通过雄辩的方式从嵌套类别中获取所有产品。
数据库结构
product
id
name
categories
id
parent_id
name
product_categories
product_id
category_id
模型
产品型号
public function categories(){
return $this->belongsToMany(Category::class,'product_categories');
}
public function scopeGetCategoriesProducts($query,$category){
return $query->with('categories')
->whereHas('categories', function ($q) use ($category) {
$q->where('parent_id', $category)
->orWhere('categories.id', $category);
})->where('status',1);
}
类别模型
public function products(){
return $this->belongsToMany(Product::class,'product_categories');
}
public function parent()
{
return $this->belongsTo('App\Models\Category', 'parent_id');
}
public function children()
{
return $this->hasMany('App\Models\Category', 'parent_id');
}
public function childrenRecursive(){
return $this->children()->with('childrenRecursive');
}
我有三个级别的类别树...通过我拥有的代码,我可以从两个级别获得产品... 有人可以帮忙吗?我坚信,有一种方法可以雄辩地解决此问题。像这样
public function scopeGetCategoriesProducts($query,$category){
return $query->with('categories')
->whereHas('categories', function ($q) use ($category) {
$q->with('parent')
->whereHas('parent', function ($que) use ($category) {
$que->where('id',$category);
})->where('parent_id', $category)
->orWhere('categories.id', $category);
})->where('status',1);
}
感谢您的帮助...正在等待您的建议