php Eloquent ORM laravel 5获取id数组

5jdjgkvh  于 2023-01-08  发布在  PHP
关注(0)|答案(9)|浏览(179)

我使用的是Eloquent ORM laravel 5.1,我想返回一个id大于0的数组,我的模型名为test
我试过:

$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();

它返回:

Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )

但我希望结果是这样的简单数组:

Array ( 1,2 )
wa7juj8i

wa7juj8i1#

test::where('id' ,'>' ,0)->pluck('id')->toArray();

注意:如果需要string(例如在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');
evrscar2

evrscar22#

Collection中,另一种方法是:

$collection->pluck('id')->toArray()

这将返回一个索引数组,例如,laravel可以在whereIn()查询中完美地使用该数组。

qnzebej0

qnzebej03#

正确的答案是lists方法,它非常简单,如下所示:

$test=test::select('id')->where('id' ,'>' ,0)->lists('id');

问候!

xwbd5t1u

xwbd5t1u4#

您可以使用all()方法代替toArray()方法(请参阅更多信息:laravel文档):

test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array

如果您需要string,则可以在不使用toArray()附件的情况下使用:

test::where('id' ,'>' ,0)->pluck('id'); //returns string
oiopk7p5

oiopk7p55#

如果您正在使用DB,请提供额外信息:

DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();

如果使用Eloquent模型:

test::where('id', '>', 0)->lists('id')->toArray();
dwbf0jvd

dwbf0jvd6#

从集合***中获取模型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
irtuqstp

irtuqstp7#

了解lists()方法

$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
abithluo

abithluo8#

尽管您已标记了答案,但这是一种简单得多的方法

App\User::pluck('id')->toArray()
ckx4rj1h

ckx4rj1h9#

在Laravel 8中,这对我很有效

$arr = SomeModel::where("field", value)->get()->toArray();

相关问题