Laravel从嵌套类别中获取所有产品

时间:2019-01-26 21:15:31

标签: laravel eloquent

我正在尝试通过雄辩的方式从嵌套类别中获取所有产品。

数据库结构

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);
}

感谢您的帮助...正在等待您的建议

0 个答案:

没有答案