雄辩的ORM laravel 5获取ID数组

时间:2015-12-16 09:24:42

标签: php laravel model eloquent laravel-5.1

我使用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 )

9 个答案:

答案 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();

此致