Я использую Eloquent ORM laravel 5.1, я хочу вернуть массив идентификаторов больше 0, моя модель называется test
.
Я пытался :
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
Он возвращается:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
Но я хочу, чтобы результат был в виде простого массива, например:
Array ( 1,2 )
toArray()
должен вернуть массив вроде[12,14]
Из a
Collection
, вы могли бы сделать это по-другому:$collection->pluck('id')->toArray()
Это вернет индексированный массив, который, например, отлично может использовать laravel в
whereIn()
запросе.источник
\YourModel::all(['id'])
...->pluck...
(указав только столбец идентификатора, вы не загружаете все данные в модель)Правильный ответ на этот вопрос - метод
lists
, он очень прост:$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
С уважением!
источник
Вы можете использовать
all()
метод вместоtoArray()
метода (подробнее см .: документация laravel ):test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array
При необходимости
string
можно использовать безtoArray()
вложения:test::where('id' ,'>' ,0)->pluck('id'); //returns string
источник
прочитать о методе lists ()
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
источник
Дополнительная информация, если вы используете
DB
:DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();
А если использовать модель Eloquent:
test::where('id', '>', 0)->lists('id')->toArray();
источник
Хотя вы отметили ответ, это гораздо более простой подход
App\User::pluck('id')->toArray()
источник
Вы также можете использовать метод all () для получения массива выбранных атрибутов.
$test=test::select('id')->where('id' ,'>' ,0)->all();
С уважением
источник