Как сделать следующий запрос в Laravel Rloquent?
SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"
Я пробовал следовать
CategoryModel::where('catType', '=', 'Root')
->lists('catName', 'catID', 'imgPath');
но возвращает только два поля.
Array ( [7] => Category 1 )
lists()
превращает полученный набор в массив с ключевым значением. У вас может быть только два столбца базы данных. В противном случае вы должны использовать select()
, но затем вы получите коллекцию моделей, а не только массив.
$categories = CategoryModel::select('catID', 'catName', 'imgPath')
->where('catType', '=', 'Root')
->get();
select()
.
Выбор нескольких столбцов
CategoryModel::get(['catName', 'catID', 'imgPath']);
Работает с Laravel 5.3 тоже!
CategoryModel::wherecatType('Root')
->pluck('catName', 'catID', 'imgPath');
Из версии laravel 5.3 ^ lists()
устарела, и вместо нее используется функция pluck()
.
pluck()
возвращает коллекцию, и если вам нужен простой массив, просто добавьте ->toArray()
к нему.
CategoryModel::select('catName', 'catID', 'imgPath')->where('catType', '=', 'Root')->get()
?