我有一个带parent_id的类别表,用于存储类别和子类别。此类别可以是多级的,这意味着类别可以具有子类别,每个子类别可以具有子类别,依此类推。而且它是动态的,因此级别数不受限制。我在类别模型中定义了一个函数,名称如下:
public function childs()
{
return $this->hasMany(Category::class, 'parent_id');
}
现在我想急于加载带有子类别的类别。代码
$cats = Category::with('childs')->get();
效果很好,但它只有一个子类别级别,我想急于加载所有级别。像
$cats = Category:with('childs')->with('childs')... ->get();
有没有办法做到这一点?获取所有类别级别? 如果没有,如何在一个集合中获得所有级别的子类别而又不急于加载?
答案 0 :(得分:0)
您可以使用它来加载所有子类别
class Category extends Model
{
public function children()
{
return $this->hasMany($this, 'parent_id');
}
public function childrenTree()
{
return $this->children()->with('childrenTree');
}
}
答案 1 :(得分:0)
只需将您的关系与您的关系联系起来。我的意思是递归。 尝试以下代码:
class Category extends Model
{
public function subCategory()
{
return $this->hasMany(Category::class, 'parent_id')->with('subCategory');
}
}