Wie erhält man in Laravel 5.2 mit eloquent nur eine Spalte als ein dimensionales Array?
Ich habe versucht:
$array = Word_relation::select('Word_two')->where('Word_one', $Word_id)->get()->toArray();
aber dieses gibt es als 2 dimensionales Array wie:
array(2) {
[0]=>
array(1) {
["Word_one"]=>
int(2)
}
[1]=>
array(1) {
["Word_one"]=>
int(3)
}
}
aber ich möchte es als:
array(2) {
[0]=>2
[1]=>3
}
Sie können die Methode pluck
verwenden:
Word_relation::where('Word_one', $Word_id)->pluck('Word_two')->toArray();
Weitere Informationen darüber, welche Methoden für die Verwendung mit collection verfügbar sind, können Sie in der Laravel-Dokumentation nachlesen.
Wenn Sie mehrere Einträge erhalten, wird die richtige Methode als -lists bezeichnet.
Word_relation::select('Word_two')->where('Word_one', $Word_id)->lists('Word_one')->toArray();
Ich bin auf diese Frage gestoßen und dachte, ich würde klarstellen, dass die liste () -Methode eines eloquenten Builder-Objekts in Laravel 5.2 abgeschrieben und durch pluck () ersetzt wurde.
// <= Laravel 5.1
Word_relation::where('Word_one', $Word_id)->lists('Word_one')->toArray();
// >= Laravel 5.2
Word_relation::where('Word_one', $Word_id)->pluck('Word_one')->toArray();
Diese Methoden können beispielsweise auch für eine Collection aufgerufen werden
// <= Laravel 5.1
$collection = Word_relation::where('Word_one', $Word_id)->get();
$array = $collection->lists('Word_one');
// >= Laravel 5.2
$collection = Word_relation::where('Word_one', $Word_id)->get();
$array = $collection->pluck('Word_one');
Das kann man als kurz machen:
Model::pluck('column')
wobei Modell das Modell ist, z. B. User
Modell und Spalte als Spaltenname wie id
.
wenn Sie tun
User::pluck('id') // [1,2,3, ...]
Natürlich können Sie auch andere Klauseln wie where
verwenden, bevor Sie zupfen