Как вернуть массив вместо коллекции в Laravel?

в Laravel можно выбрать только одно поле и вернуть его в виде набора/ массива.

например рассмотрим модель Foo который связан с таблицей foos, который имеет поле id, a, b, c.

рассмотрим следующие примеры данных:

(1, 10, 15, 20)
(1, 12, 15, 27)
(1, 17, 15, 27)
(1, 25, 16, 29)
(1, 28, 16, 40)

теперь если я хочу создать запрос, который возвращает все значения a здесь b is 15, я мог бы сделать это вот так:

Foo::select('a')->where('b', 15)->get();
это вернет красноречивую коллекцию.

вместо этого, как я могу вернуть массив такой:

[10, 12, 17]

3 ответов


просто использовать pluck() и ->toArray():

Foo::where('b', 15)->pluck('a')->toArray();

фреймворк Laravel и наглеют() метод.

что Laravel() метод.


метод lists устарел, и pluck нужен какой-то параметр, поэтому, если вы хотите получить все атрибуты в формате массива, используйте его таким образом.

Foo::select('a')->where('b', 15)->get()->all();


Do

Foo::where('b', 15)->lists('a')->all();

Это даст вам массив идентификаторов. например [2, 3, 5]