我使用Eloquent ORM laravel 5.1,我想返回一个大于0的ID数组,我的模型名为test
。
我试过了:
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
它返回:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
但我希望结果是简单的数组,如:
Array ( 1,2 )
答案 0 :(得分:138)
您可以使用 lists()
:
test::where('id' ,'>' ,0)->lists('id')->toArray();
注意:如果您以Studly Case
格式定义模型,例如Test
,则会更好。
您还可以使用 get()
:
test::where('id' ,'>' ,0)->get('id');
更新: (对于版本> = 5.2)
lists()
方法在新版本>= 5.2
中 已弃用 ,现在您可以使用改为使用pluck()
方法:
test::where('id' ,'>' ,0)->pluck('id')->toArray();
答案 1 :(得分:8)
在Collection
中,您可以采用的另一种方法是:
$collection->pluck('id')->toArray()
这将返回一个索引数组,例如,laravel可以在whereIn()
查询中完美使用。
答案 2 :(得分:4)
阅读lists()方法
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
答案 3 :(得分:4)
正确的答案是方法lists
,它非常简单:
$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
问候!
答案 4 :(得分:0)
您可以使用all()
方法代替toArray()
方法(请参阅更多:laravel documentation):
test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array
如果您需要string
,则可以不带toArray()
附件来使用:
test::where('id' ,'>' ,0)->pluck('id'); //returns string
答案 5 :(得分:0)
如果您使用的是DB
,请提供额外的信息:
DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();
如果使用雄辩的模式:
test::where('id', '>', 0)->lists('id')->toArray();
答案 6 :(得分:0)
尽管您已标记答案,但这是一种简单得多的方法
App\User::pluck('id')->toArray()
答案 7 :(得分:0)
从集合中获取和排列模型 ID 的最简单方法:
$test = test::select('id')->where('id' ,'>' ,0)->get('id')->modelKeys();
自 Laravel 5.5 起可用: https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Collection.html#method_modelKeys
答案 8 :(得分:-1)
您也可以使用all()方法获取所选属性的数组。
$test=test::select('id')->where('id' ,'>' ,0)->all();
此致