Красноречивый ORM laravel 5 Получить массив идентификаторов


Я использую красноречивый 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 )
Author: paranoid, 2015-12-16

4 answers

Вы могли бы использовать 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();
 104
Author: Zakaria Acharki, 2018-07-28 17:31:32

Прочитайте о методе lists()

$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
 4
Author: Amir Bar, 2015-12-16 09:32:13

Правильный ответ на это - метод lists, он очень прост, вот так:

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

С уважением!

 3
Author: Radames E. Hernandez D.L.R., 2017-05-29 16:59:06

Вы также можете использовать метод all() для получения массива выбранных атрибутов.

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

С уважением

 0
Author: Narendra Ojha, 2017-07-14 08:30:18