如何将收集结果作为带有 id 的数组获取

Ami*_*Bar 1 php laravel eloquent laravel-5 laravel-collection

它应该很简单,但我遗漏了一些东西,让我们说这个简单的口才:

Post::select('id')->take(5)->get();
Run Code Online (Sandbox Code Playgroud)

我想获得带有结果 ID 的简单数组,因此它看起来像这样:

[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

但我得到了这样的东西:

[{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"},{"id":"5"}]
Run Code Online (Sandbox Code Playgroud)

flatten() 不起作用,我得到了相同的结果:

Post::select('id')->take(5)->get()->flatten();
Run Code Online (Sandbox Code Playgroud)

http://laravel.com/docs/master/collections#method-flatten

flatten 方法将多维集合展平为单维:

我错过了什么?我记得有一种短线 Laravel 方法可以在不遍历数组并创建一个新数组的情况下获得此结果

Ami*_*Bar 5

刚知道,它的 list() 有魔力,所以答案是:

Post::select('id')->take(5)->lists('id');
Run Code Online (Sandbox Code Playgroud)

更新: 从 laravel 5.2 开始,list() 已被弃用

集合、查询构建器和 Eloquent 查询构建器对象上的列表方法已重命名为 pluck。方法签名保持不变。

新方法名称是 pluck,其工作方式相同:

Post::select('id')->take(5)->pluck('id');
Run Code Online (Sandbox Code Playgroud)