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 )
Ответы
Ответ 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();
Привет