Подтвердить что ты не робот

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

Я использую 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 )
4b9b3361

Ответ 1

Вы можете использовать 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();

Примечание: Если вам нужна строка, например, в блейде, вы можете использовать функцию без части toArray(), например:

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

Ответ 2

Из Collection вы можете сделать это еще одним способом:

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

Это вернет индексированный массив, который может быть использован laravel, например, в whereIn().

Ответ 3

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

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

Ответ 4

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

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

Привет!

Ответ 5

Вы можете использовать метод all() вместо метода toArray() (подробнее: документация laravel):

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

Если вам нужен string, вы можете использовать без вложения toArray():

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

Ответ 6

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

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

Привет