首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >急切加载多级分类

急切加载多级分类
EN

Stack Overflow用户
提问于 2019-02-17 20:45:39
回答 2查看 445关注 0票数 0

我有一个带有parent_id的categories表来存储类别和子类别。这种类别可以是多级的,这意味着一个类别可以有子类别,每个子类别可以有子类别,依此类推。而且它是动态的,所以层数是不受限制的。我在Category model中定义了一个函数,名称如下:

代码语言:javascript
复制
public function childs()
{
    return $this->hasMany(Category::class, 'parent_id');
}

现在,我想从子类别中快速加载类别。代码

代码语言:javascript
复制
$cats = Category::with('childs')->get();

工作很棒,但它只有一个级别的子类别,我想急于加载所有级别。就像这样

代码语言:javascript
复制
$cats = Category:with('childs')->with('childs')... ->get();

有没有办法做到这一点?来获取所有类别的级别?如果没有,如何在一个集合中获得所有级别的子类别,而不需要立即加载?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-18 06:59:02

您可以使用它来加载所有子类别

代码语言:javascript
复制
class Category extends Model
{
    public function children()
    {
        return $this->hasMany($this, 'parent_id');
    }

    public function childrenTree()
    {
        return $this->children()->with('childrenTree');
    }
}
票数 0
EN

Stack Overflow用户

发布于 2019-07-07 21:51:33

只要给你的亲戚打电话就行了。我的意思是递归。尝试以下代码:

代码语言:javascript
复制
class Category extends Model
{
   public function subCategory()
   {
      return $this->hasMany(Category::class, 'parent_id')->with('subCategory');
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54733385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档