我正在使用 Laravel 5.1 的 Eloquent ORM,并且想要返回一个大于0的ID数组,我的模型名为test
。
我尝试过:
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
它返回:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
但是我希望结果以简单的数组形式呈现,就像这样:
Array ( 1,2 )
我正在使用 Laravel 5.1 的 Eloquent ORM,并且想要返回一个大于0的ID数组,我的模型名为test
。
我尝试过:
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
它返回:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
但是我希望结果以简单的数组形式呈现,就像这样:
Array ( 1,2 )
test::where('id' ,'>' ,0)->pluck('id')->toArray();
注意:如果您需要一个字符串,例如在 Blade 中,您可以使用不带 toArray() 部分的函数,如下:
test::where('id' ,'>' ,0)->pluck('id');
更新:适用于版本小于5.2
您可以使用lists()
:
test::where('id' ,'>' ,0)->lists('id')->toArray();
注意:最好使用Studly Case
格式定义您的模型,例如:Test
。
您也可以使用get()
方法:
test::where('id' ,'>' ,0)->get('id');
从一个Collection
中,另一种方法是:
$collection->pluck('id')->toArray()
这将返回一个索引数组,可以在 Laravel 中完美地使用 whereIn()
查询,例如。
\YourModel::all(['id'])
中获取要提取的集合... ->pluck...
(仅指定ID列,您不需要将所有数据加载到模型中)。 - jave.web正确的答案是使用方法 lists
,它就像这样非常简单:
$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
Regards!
$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
... ->get()->modelKeys()
- Pathros您可以使用all()
方法代替toArray()
方法(更多信息请参见:Laravel文档):
test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array
toArray()
附加:test::where('id' ,'>' ,0)->pluck('id'); //returns string
额外提供一些信息,如果您正在使用DB
:
DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();
如果使用Eloquent模型:
test::where('id', '>', 0)->lists('id')->toArray();
阅读lists()方法的介绍
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
App\User::pluck('id')->toArray()
$arr = SomeModel::where("field", value)->get()->toArray();
toArray()
应该返回一个类似于[12,14]
的数组。 - Zakaria Acharki