Laravel - 如何列出集合中关系的所有键?

时间:2017-07-26 11:28:37

标签: php laravel collections frameworks

我有类似的东西:

$categories = Categories::with('sections')->get();

它给了我那个集合:

img

正如您在图片上看到的,我可以通过

访问所有" Y"'
dd($categories->pluck('id'));

这给了我想要的东西,这个系列中的所有ID项目

enter image description here

但问题是

现在如何获得所有ID" Y" ?这是属于这些项目的关系的属性

我不想通过预告来做到这一点。 < ----我知道如何这样做。

但必须有更好的方法,更快。

如何实现它而不必一遍又一遍地预习这个集合:)?

2 个答案:

答案 0 :(得分:3)

您可以使用以下示例使用点表示法简单地检索部分中的所有ID:

你有:

$categories = Categories::with('sections')->get();

获取所有部分的ID将是:

$sections = $categories->pluck('sections.*.id')->flatten()->values();

这将根据深度sections-all-ids访问集合。并返回一个重新索引的底层数组。

如果您只是需要这些部分,则可以在部分停止。

  PS:就像@Jerodev提到的那样,集合只以更有用的方式包装php数组,而底层的pluck和许多这些操作都使用循环。

希望这是有帮助的

答案 1 :(得分:1)

所以,如果我理解正确,你想要该集合中所有类别的所有部分ID?

您可以使用whereIn对这些类别的ID使用第二个查询。此外,不再需要with功能。

$categories = Categories::get();
$sections = Section::whereIn('category_id', $categories->pluck('id'))->get();