【问题标题】:What query can i use to get subcategories for each category?我可以使用什么查询来获取每个类别的子类别?
【发布时间】:2019-02-24 19:27:06
【问题描述】:

我正在使用这个查询来获取每个类别的孩子

$this['children'] = Cat::first()->children;

但它只获取第一个类别的子类别,并且所有其他类别都会出现相同的子类别。关于如何解决这个问题的任何想法?

模型关系

 public function children(){

    return $this->hasMany(static::class,'parent_id','id');

表结构

分类表

身份证

猫头衔

parent_id

nest_right

巢左

嵌套深度

蛞蝓

parent_id = 0(类别)

parent_id > 0(子类别)

【问题讨论】:

  • 你能展示你的模型关系和表结构吗?
  • 你需要通过withCat::with('children')->get();使用急切加载
  • 我如何遍历它们以获得属于每只猫的子猫?因为现在它得到了所有的猫和附属的子猫

标签: php laravel octobercms


【解决方案1】:

要获取每个类别的子类别,您首先需要获取每个类别的 id 并在查询中使用它。 (例如在 foreach 循环中)

$this['children'] = Cat::find($id)->children;

如果您需要同时获取所有类别及其相关子类别,则需要预先加载:

$allCatsWithTheirChildren = Cat::with('children')->all();

【讨论】:

  • 感谢第一个选项是我想要的,但它会抛出未定义的变量:id,我知道我应该定义它。不知道我尝试过的效果如何。
  • 在您的代码“$this['children'] = ...”中,$this 是什么?那是类别模型吗?或者那是您在代码中使用的另一个类?
  • 是的,类别模型
  • 好的,在这种情况下只需 $children = $this->children;应该管用。因为您的模型中已经有了 children 关系,您可以使用它。
  • 不,它没有。它只是空出来的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多