Wie kann man in Laravel 5.2 mit eloquent nur eine Spalte als ein dimensionales Array erhalten?
Ich habe versucht:
$array = Word_relation::select('word_two')->where('word_one', $word_id)->get()->toArray();
aber dieser gibt es als 2 dimensionale Anordnung wie:
array(2) {
[0]=>
array(1) {
["word_one"]=>
int(2)
}
[1]=>
array(1) {
["word_one"]=>
int(3)
}
}
aber ich möchte es bekommen als:
array(2) {
[0]=>2
[1]=>3
}
laravel
eloquent
laravel-5.2
Riiwo
quelle
quelle
select
dass es redundant ist, aber ich sehe kein Problem damit, eine Sammlung zu haben, da eine Sammlung nur ein ausgefallenes Array ist, das über dasselbe wie ein Array iteriert werden kann. Ich verwende selten Arrays anstelle von Sammlungen, da der Speicherbedarf im Allgemeinen kein Problem darstellt und Sammlungen bei Bedarf einfach in Arrays umgewandelt werden können, da sie dietoArray
Methode implementieren . Aus Gründen der Übereinstimmung mit Ihrer Frage habe ich die Antwort geändert, um das Ergebnis zu konvertieren.Collection
auch einepluck()
Methode hat - Was Sie verwenden, ist eine Methode vonQueryBuilder
.Wenn Sie mehrere Einträge erhalten, heißt die richtige Methode Listen .
Word_relation::select('word_two')->where('word_one', $word_id)->lists('word_one')->toArray();
quelle
lists()
funktioniert gut von selbst. Vielen Dank.lists()
ist in Laravel Ver.5.2 und höher veraltet, wopluck()
wie in der getaggten Antwort der Weg ist.Das kann in Kürze geschehen als:
Model::pluck('column')
Dabei ist Modell das Modell wie
User
Modell und Spalte als Spaltennameid
wenn Sie tun
User::pluck('id') // [1,2,3, ...]
& Natürlich können Sie auch andere Klauseln wie
where
Klausel vor dem Zupfen habenquelle
Ich bin auf diese Frage gestoßen und dachte, ich würde klarstellen, dass die list () -Methode eines beredten 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 Sammlung 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');
quelle
Ich denke, Sie können es erreichen, indem Sie den folgenden Code verwenden
Model::get(['ColumnName'])->toArray();
quelle
Model::get(['ColumnName'])->toArray();
ist, entspricht TunModel::select('ColumnName')->get()->toArray()
dem Tun, was zu einem mehrdimensionalen Array führt.