Как выбрать определенные поля в Laravel Eloquent?

4

Как сделать следующий запрос в Laravel Rloquent?

SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"

Я пробовал следовать

CategoryModel::where('catType', '=', 'Root')
                ->lists('catName', 'catID', 'imgPath');

но возвращает только два поля.

Array ( [7] => Category 1 )
  • 1
    Конечно, CategoryModel::select('catName', 'catID', 'imgPath')->where('catType', '=', 'Root')->get() ?
Теги:
eloquent
laravel-4

4 ответа

14
Лучший ответ

lists() превращает полученный набор в массив с ключевым значением. У вас может быть только два столбца базы данных. В противном случае вы должны использовать select(), но затем вы получите коллекцию моделей, а не только массив.

$categories = CategoryModel::select('catID', 'catName', 'imgPath')
                           ->where('catType', '=', 'Root')
                           ->get();
  • 0
    Спасибо, что работает ....
  • 0
    У кого-нибудь есть ссылка на страницы документации? Я не могу их найти. В частности, я бы хотел лучше понять функцию select() .
1

Выбор нескольких столбцов

CategoryModel::get(['catName', 'catID', 'imgPath']);

Работает с Laravel 5.3 тоже!

1
CategoryModel::wherecatType('Root')
            ->pluck('catName', 'catID', 'imgPath');
0

Из версии laravel 5.3 ^ lists() устарела, и вместо нее используется функция pluck().

pluck() возвращает коллекцию, и если вам нужен простой массив, просто добавьте ->toArray() к нему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню