web-dev-qa-db-fra.com

Comment sélectionner certains champs dans Laravel Éloquent?

Comment faire suite à une requête dans Laravel Eloquent?

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

J'ai essayé de suivre

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

mais il ne retourne que deux champs.

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

lists() transforme la collection résultante en un tableau avec une valeur de clé. Vous ne pouvez y avoir que deux colonnes de base de données. Sinon, vous devez utiliser select() mais vous obtiendrez alors une collection de modèles et pas seulement un tableau.

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

Sélection de plusieurs colonnes

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

Fonctionne avec Laravel 5.3 aussi!

2
Harry Bosh

A partir de laravel version 5.3, ^ lists() est obsolète et la fonction pluck() est utilisée à la place.

pluck() renvoie une collection et si vous avez besoin d'un tableau simple, ajoutez-y simplement ->toArray().

0
lewis4u