我有一个带有parent_id的categories表来存储类别和子类别。这种类别可以是多级的,这意味着一个类别可以有子类别,每个子类别可以有子类别,依此类推。而且它是动态的,所以层数是不受限制的。我在Category model中定义了一个函数,名称如下:
public function childs()
{
return $this->hasMany(Category::class, 'parent_id');
}现在,我想从子类别中快速加载类别。代码
$cats = Category::with('childs')->get();工作很棒,但它只有一个级别的子类别,我想急于加载所有级别。就像这样
$cats = Category:with('childs')->with('childs')... ->get();有没有办法做到这一点?来获取所有类别的级别?如果没有,如何在一个集合中获得所有级别的子类别,而不需要立即加载?
发布于 2019-02-18 06:59:02
您可以使用它来加载所有子类别
class Category extends Model
{
public function children()
{
return $this->hasMany($this, 'parent_id');
}
public function childrenTree()
{
return $this->children()->with('childrenTree');
}
}发布于 2019-07-07 21:51:33
只要给你的亲戚打电话就行了。我的意思是递归。尝试以下代码:
class Category extends Model
{
public function subCategory()
{
return $this->hasMany(Category::class, 'parent_id')->with('subCategory');
}
}https://stackoverflow.com/questions/54733385
复制相似问题