Laravel 集合获取列到数组

Dum*_*tru 5 php laravel

我有收藏:

\n\n
$categories = $post->categories;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我明白了:

\n\n
#items: array:1 [\xe2\x96\xbc\n   0 => Category {#999 \xe2\x96\xb6}\n   1 => Category {#999 \xe2\x96\xb6}\n]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我需要从类别中获取id

\n\n

我试试这个:

\n\n
$categories = array_column('id', $post->categories);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但集合array_column不起作用。我怎样才能做到这一点?

\n

Moz*_*mil 12

已经有一些很好的答案了。

另一种选择是:

$category_ids = $post->categories->pluck('id');
Run Code Online (Sandbox Code Playgroud)


Ift*_*din 1

首先将您的集合转换为数组。您可以使用eloquent 的toArray() ,如下所示。

$categories = $post->categories()->get()->toArray();
Run Code Online (Sandbox Code Playgroud)

和这个

$categories = array_column('id', $post->categories);
Run Code Online (Sandbox Code Playgroud)

应该

$categories = array_column($post->categories, 'id');
Run Code Online (Sandbox Code Playgroud)

您的新代码应如下所示:

$categories = $post->categories()->get()->toArray();

$categories = array_column($categories, 'id');
Run Code Online (Sandbox Code Playgroud)

参考:数组列