Ich verwende Eloquent ORM Laravel 5.1. Ich möchte ein Array von IDs zurückgeben, die größer als 0 sind. Mein Modell heißt test
.
Ich habe versucht :
$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
Es kehrt zurück:
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
Aber ich möchte, dass das Ergebnis in einem einfachen Array wie folgt vorliegt:
Array ( 1,2 )
toArray()
sollte ein Array wie[12,14]
Ein
Collection
anderer Weg, wie Sie es tun könnten, wäre:$collection->pluck('id')->toArray()
Dies gibt ein indiziertes Array zurück, das beispielsweise von Laravel in einer
whereIn()
Abfrage perfekt verwendet werden kann .quelle
\YourModel::all(['id'])
...->pluck...
(wenn Sie nur die ID-SpalteDie richtige Antwort darauf ist die Methode
lists
, die so einfach ist:$test=test::select('id')->where('id' ,'>' ,0)->lists('id');
Grüße!
quelle
Sie können
all()
Methode anstelle vontoArray()
Methode verwenden (siehe mehr: Laravel-Dokumentation ):test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array
Wenn Sie eine benötigen
string
, können Sie ohnetoArray()
Anhang verwenden:test::where('id' ,'>' ,0)->pluck('id'); //returns string
quelle
Lesen Sie mehr über die Methode lists ()
$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()
quelle
Nur eine zusätzliche Information, wenn Sie verwenden
DB
:DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();
Und wenn Sie das eloquente Modell verwenden:
test::where('id', '>', 0)->lists('id')->toArray();
quelle
Obwohl Sie die Antwort markiert haben, ist dies ein viel einfacherer Ansatz
App\User::pluck('id')->toArray()
quelle
Sie können auch die all () -Methode verwenden, um ein Array ausgewählter Attribute abzurufen.
$test=test::select('id')->where('id' ,'>' ,0)->all();
Grüße
quelle