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

Kry*_*ska 2 php collections frameworks laravel

我有类似的东西:

$categories = Categories::with('sections')->get();
Run Code Online (Sandbox Code Playgroud)

它给了我这个集合:

图片

正如您在图片上看到的,我可以通过以下方式访问所有“Y”

dd($categories->pluck('id'));
Run Code Online (Sandbox Code Playgroud)

这给了我我想要的,这个集合中所有项目的 ID

在此处输入图片说明

但问题是

现在如何获得“Y”的所有ID?哪些是属于这些项目中的每一个的关系属性

我不想通过 foreaching 来做到这一点。<----我知道怎么做。

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

如何在没有不必要的情况下一遍又一遍地搜索这个集合的情况下实现它:)?

Olu*_*kin 5

您可以使用以下示例使用点符号简单地检索部分中的所有 id:

你有:

$categories = Categories::with('sections')->get();
Run Code Online (Sandbox Code Playgroud)

获取所有部分的 id 将是:

$sections = $categories->pluck('sections.*.id')->flatten()->values();
Run Code Online (Sandbox Code Playgroud)

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

同样,如果您只需要部分,您可以在部分停止。

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

希望这有帮助