Laravel Eloquent: Geben Sie den Array-Schlüssel als Feld-ID zurück
Lesezeit: 3 Minuten
Broschi
Wenn ich eine Abfrage über Laravels Eloquent ORM ausführe, möchte ich die Zeilen-ID als Array-Ergebnisschlüssel erhalten. Dies erleichtert die Dinge, wenn ich etwas basierend auf einer ID überprüfen möchte (mit array_key_exists) oder einige Nachschlagevorgänge durchführen möchte (wenn ich benötigen einen bestimmten Eintrag aus dem Ergebnisarray)
Gibt es eine Möglichkeit, Eloquent anzuweisen, den Schlüssel auf die Feld-ID zu setzen?
Ich muss dir zustimmen, dass du es selbst machen musst. Alternativ könnten Sie verwenden ->find($id) in der Sammlung, um ein Modell nach ID zu finden …
Wenn Sie eine benutzerdefinierte Abfrage durchführen, können Sie sie folgendermaßen verwenden: Model::selectRaw(…)->where(…)->groupBy(‘field’)->get()->keyBy( ‘Feld’)->toArray();
– Phönix
12. September 2018 um 14:40 Uhr
zittern
Da Sie eine Eloquent Collection (a Kinderklasse des generisch Collection Klasse) du kannst den … benutzen getDictionary Methode. $collection->getDictionary() gibt Ihnen ein Array Ihrer Category-Objekte, die nach ihren Primärschlüsseln verschlüsselt sind.
Wenn Sie anstelle eines nativen PHP-Arrays eine andere Sammlung wünschen, können Sie stattdessen verwenden $collection->keyBy($property). Es sieht so aus, als ob Ihr Primärschlüssel ist category_idAlso $collection->keyBy('category_id'). Sie können diese Methode verwenden, um nach jeder beliebigen Eigenschaft zu schlüsseln, einschließlich aller Get-Mutatoren, die Sie möglicherweise geschrieben haben.
Du hast ein Support\Collection/Database\Eloquent\Collection Sie können die Methode verwenden lists('id') um ein Array der ID jedes der Modelle innerhalb der Sammlung zurückzugeben.
Dann benutze array_combine um die Schlüssel den Modellen zuzuordnen. Das Ergebnis davon ist ein Array, dessen ID dem entsprechenden Modell zugeordnet ist.
Wenn Sie id als Schlüssel benötigen, verlassen Sie sich auf die Collection:
Ich hatte eine ähnliche Herausforderung – ich wollte ein PHP-Array, damit ich für jede Auswahl ein mit einem erstellen kann, wobei der Wert von ‘s die Spalte für die automatische Inkrementierung der ID und der angezeigte Text der Wert ist.
13347900cookie-checkLaravel Eloquent: Geben Sie den Array-Schlüssel als Feld-ID zurückyes
Ich muss dir zustimmen, dass du es selbst machen musst. Alternativ könnten Sie verwenden
->find($id)
in der Sammlung, um ein Modell nach ID zu finden …– Lukasgeiter
11. November 2014 um 15:35 Uhr
Sie haben viele Methoden: laravel.com/api/4.2/Illuminate/Support/Collection.html & laravel.com/api/4.2/Illuminate/Database/Eloquent/… Sie sollten es also nicht tun müssen. Eloquent bietet so etwas nicht.
– Jarek Tkaczyk
12. November 2014 um 12:15 Uhr