拉拉维尔集合获取列到数组

5

我有一个集合:

$categories = $post->categories;

我理解为:“我得到了这个:”
#items: array:1 [▼
   0 => Category {#999 ▶}
   1 => Category {#999 ▶}
]

我需要获取分类id

我尝试了这个:

$categories = array_column('id', $post->categories);

但是使用集合时,array_column不起作用。我该怎么做?

你怎么看 $categories = array_column($post->categories,'id');?你把参数放错了。 - A l w a y s S u n n y
3个回答

10

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

另一个选择是:

$category_ids = $post->categories->pluck('id');

这个答案应该被标记为已解决! - Abdullah Alhariri

2

如果您想从集合中获取任何属性,请使用map高阶消息。

例如:

$category_ids = $post->categories->map->id;

那好吧。

1

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

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

并且这个

$categories = array_column('id', $post->categories);

应该是
$categories = array_column($post->categories, 'id');

你的新代码应该长这样:

Your new code should look like:

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

$categories = array_column($categories, 'id');

参考:array_column

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接