Я использую 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 )
Вы можете использовать lists()
:
test::where('id' ,'>' ,0)->lists('id')->toArray();
ПРИМЕЧАНИЕ. Лучше, если вы определите свои модели в формате Studly Case
, например, Test
.
Вы также можете использовать get()
:
test::where('id' ,'>' ,0)->get('id');
ОБНОВЛЕНИЕ: (Для версий> = 5.2)
В новых версиях >= 5.2
метод lists()
устарел, теперь вместо него можно использовать метод pluck()
:
test::where('id' ,'>' ,0)->pluck('id')->toArray();
прочитайте о методах lists()
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
Из коллекции вы можете сделать это еще одним способом:
$collection->pluck('id')->toArray()
Это вернет индексированный массив, который может быть использован laravel, например, в запросе whereIn.
Правильный ответ на этот вопрос - метод lists
, это очень просто:
$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
Привет!
Вы также можете использовать метод all() для получения массива выбранных атрибутов.
$test=test::select('id')->where('id' ,'>' ,0)->all();
Привет
toArray()
должен возвращать массив вроде[12,14]