webentwicklung-frage-antwort-db.com.de

Eloquent erhält nur eine Spalte als Array

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
}
47
Riiwo

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.

102
Bogdan

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();
7
moxx

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');
2
SamBremner

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

0
APu