我正在做一个Laravel项目,其中我有一个层次化的类别 struct .我的数据库中的每个集合都与一个类别相关联,并且该类别可以有父类别和子类别.我正在try 实现一个筛选器功能,该功能允许我基于选定的类别及其所有子类别检索集合.
例如,如果我 Select "Music"类别,我希望检索"Music"类别中的所有集合,以及其子类别中的集合,如"Rock"、"Hip-Hop"和"Rap".
我试图在我的Eloquent 模型中实现作用域方法来实现这一点,但我遇到了递归和类别之间的关系方面的问题.
以下是我当前的代码:
public function scopeOfCategory($query, $category){
if ($category) {
return $query->where(function ($query) use ($category) {
$query
->where('category_id', $category)
->orWhereHas('category.parent', function ($query) use ($category) {
$query->ofCategory($category);
});
});
}
return $query;
}
错误:
local.ERROR: Call to undefined method Illuminate\Database\Eloquent\Builder::ofCategory()