J'utilise Eloquent ORM laravel 5.1, je souhaite renvoyer un tableau d'identifiants supérieur à 0, Mon modèle s'appelle test
.
J'ai essayé :
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
Il retourne:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
Mais je veux que le résultat soit dans un tableau simple comme:
Array ( 1,2 )
Vous pouvez utiliser lists()
:
test::where('id' ,'>' ,0)->lists('id')->toArray();
REMARQUE: Il est préférable de définir vos modèles au format Studly Case
, par exemple Test
.
Vous pouvez également utiliser get()
:
test::where('id' ,'>' ,0)->get('id');
UPDATE: (pour les versions> = 5.2)
La méthode lists()
était obsolète dans les nouvelles versions >= 5.2
, vous pouvez maintenant utiliser la méthode pluck()
:
test::where('id' ,'>' ,0)->pluck('id')->toArray();
NOTE: Si vous avez besoin d'une chaîne , par exemple dans un lame , vous pouvez utiliser la fonction sans la partie toArray () , comme par exemple:
test::where('id' ,'>' ,0)->pluck('id');
D'un Collection
, une autre façon de le faire serait:
$collection->pluck('id')->toArray()
Cela retournera un tableau indexé, parfaitement utilisable par laravel dans une requête whereIn()
, par exemple.
La bonne réponse à cela est la méthode lists
, c'est très simple, comme ceci:
$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
Cordialement!
en savoir plus sur la méthode lists ()
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
Vous pouvez utiliser la méthode all()
à la place de la méthode toArray()
(voir plus: documentation laravel ):
test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array
Si vous avez besoin d'une string
, vous pouvez utiliser sans toArray()
pièce jointe:
test::where('id' ,'>' ,0)->pluck('id'); //returns string