当前位置: 首页 > 知识库问答 >
问题:

快速加载多级类别

蒋健
2023-03-14

我有一个带有父类id的categories表来存储类别和子类别。该类别可以是多级的,这意味着一个类别可以有子类别,每个子类别可以有子类别,依此类推。而且它是动态的,因此级别数量不受限制。我在类别模型中定义了一个函数,名称如下:

public function childs()
{
    return $this->hasMany(Category::class, 'parent_id');
}

现在我想急切加载的类别与子类别

$cats = Category::with('childs')->get();

工作伟大,但它只得到一个级别的子类别,我想急于加载所有级别。差不多

$cats = Category:with('childs')->with('childs')... ->get();

有办法吗?要获得所有类别级别?如果没有,如何在一个集合中获得所有级别的子类别,而无需急于加载?

共有2个答案

左丘宜年
2023-03-14

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

class Category extends Model
{
   public function subCategory()
   {
      return $this->hasMany(Category::class, 'parent_id')->with('subCategory');
    }
}
公孙成仁
2023-03-14

你可以用它来加载所有的子类别

class Category extends Model
{
    public function children()
    {
        return $this->hasMany($this, 'parent_id');
    }

    public function childrenTree()
    {
        return $this->children()->with('childrenTree');
    }
}
 类似资料:
  • 问题内容: 我正在编写一个脚本,用户可以在其中选择一系列数据,然后从服务器中获取一堆图像(超过150张),然后循环通过它们来制作电影。我想知道的是在移动图像槽时加载防止滞后的最有效方法。 目前,我正在使用Ajax从服务器获取图像,并将其存储在JavaScript上的Image对象数组中。在HTML中,我有一个div标签,希望在其中放置图像。在数组中创建所有Image对象(并设置其适当的src)后,

  • 当我通过VS代码运行我的网页时,我的所有图片都会显示出来,但由于某种原因,当我通过localhost运行网页时,没有任何图片或CSS被发送。这是我下面的代码,任何帮助都将不胜感激。我曾试图在网上找到解决方案,但迄今为止似乎没有任何效果。 这是我的文件结构

  • 问题内容: 我正在尝试把我的头围住Swift语言。使用Objective-C在代码中构建视图时,常见的模式是覆盖UI属性并像这样延迟加载它们: 这允许将UIElement的配置包含在其设置中,但是不会导致每次都对其进行重新配置。 看来我们无权访问Swift中的后备存储,并且关键字实际上没有相同的语义。 我很好奇是否有人在Swift中找到了类似的模式,该模式允许人们以一种简洁的语法方式将变量和常量的

  • 我面临毕加索无法快速加载图像的问题。 有3个显示左、中、右图像。在快进/后退时,对于给定的时间点,选择左、中、右并显示在三个框中。 这是初始化。缓存是100MB以及99MB的 窗口移动的图像数是3000。所以我将图像预加载为 平均图像大小为10KB-320x180,因此达到35MB,小于99MB。 当快速循环工作时,许多图像是(来自)和(来自),但在几个快速循环之后,3个图像冻结或变得非常慢。此时

  • 问题内容: 我为iOS迅速着迷,我的Array内容超过了500个元素。 如何制作示例页面: 一旦用户滚动到最新版本,应用程序就会从500个元素中加载更多内容,依此类推。 有什么帮助吗? 谢谢。 问题答案: 为回答您的问题做了一个小测试!解决此问题的一种可能方法是制作另一个数组,并将其添加到要在表中显示的数据中,然后将数据加载到要加载的数据中!加载数据将willDisplayCell forRowA

  • 问题内容: 从CSV加载数据似乎比从Pandas的SQL(Postgre SQL)加载数据要快。(我有一个固态硬盘) 这是我的测试代码: foo.csv和数据库是相同的(两个列中的数据和列数相同,4列,100000行充满随机int)。 CSV需要0.05秒 SQL花费0.5秒 您认为CSV比SQL快10倍是正常的吗?我想知道我是否在这里错过了什么… 问题答案: 这是正常现象,读取csv文件始终是简