par*_*oid 65 php model laravel eloquent laravel-5
我正在使用Eloquent ORM laravel 5.1,我想返回一个大于0的id数组,我的模型叫做test.
我试过了 :
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
Run Code Online (Sandbox Code Playgroud)
它返回:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
Run Code Online (Sandbox Code Playgroud)
但我希望结果是简单的数组,如:
Array ( 1,2 )
Run Code Online (Sandbox Code Playgroud)
Zak*_*rki 159
你可以使用lists():
test::where('id' ,'>' ,0)->lists('id')->toArray();
Run Code Online (Sandbox Code Playgroud)
注意:如果您以Studly Case格式定义模型,则更好Test.
你也可以使用get():
test::where('id' ,'>' ,0)->get('id');
Run Code Online (Sandbox Code Playgroud)
更新:( 对于版本> = 5.2)
该lists()方法在新版本中已弃用>= 5.2,现在您可以使用pluck()方法:
test::where('id' ,'>' ,0)->pluck('id')->toArray();
Run Code Online (Sandbox Code Playgroud)
Geo*_*rge 15
从一个集合,你可以做的另一种方式是:
$collection->pluck('id')->toArray()
Run Code Online (Sandbox Code Playgroud)
这将返回一个索引数组,例如,在whereIn查询中可以通过laravel完全使用.
正确答案是方法lists,它非常简单,如下所示:
$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
Run Code Online (Sandbox Code Playgroud)
问候!
只是一个额外的信息,如果您正在使用DB:
DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();
Run Code Online (Sandbox Code Playgroud)
如果使用 Eloquent 模型:
test::where('id', '>', 0)->lists('id')->toArray();
Run Code Online (Sandbox Code Playgroud)
从集合中获取包含模型 ID 的数组的简单方法:
$test = test::select('id')->where('id' ,'>' ,0)->get('id')->modelKeys();
Run Code Online (Sandbox Code Playgroud)
自 Laravel 5.5 起可用: https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Collection.html#method_modelKeys
了解 list() 方法
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
Run Code Online (Sandbox Code Playgroud)
您可以使用all()方法而不是toArray()方法(请参阅更多:laravel 文档):
test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array
Run Code Online (Sandbox Code Playgroud)
如果你需要一个string,你可以不带toArray()附件使用:
test::where('id' ,'>' ,0)->pluck('id'); //returns string
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94997 次 |
| 最近记录: |