web-dev-qa-db-fra.com

Eloquent ORM laravel 5 Obtenir un tableau d'identifiants

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 )
58
paranoid

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');
147
Zakaria Acharki

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.

11
George

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!

4

en savoir plus sur la méthode lists ()

$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
4
Amir Bar

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
0
Mehmet Bütün