it-roy-ru.com

Как выбрать определенные поля в Laravel Красноречивый?

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

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

Я пытался следовать

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

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

Array ( [7] => Category 1 )
5
rkaartikeyan

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

$categories = CategoryModel::select('catID', 'catName', 'imgPath')
                           ->where('catType', '=', 'Root')
                           ->get();
18
lukasgeiter
CategoryModel::wherecatType('Root')
            ->pluck('catName', 'catID', 'imgPath');
2
Khan Shahrukh

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

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

Также работает с Laravel 5.3!

2
Harry Bosh

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

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

0
lewis4u