Wie die Rückkehr mehrere Beziehungen mit Laravel Eloquent?
Ich habe eine Tabelle namens users
. Jeder dieser Benutzer hat verschiedene Dinge:
- Land
- Gerät
- computer
- Kategorie
Ich habe eine Tabelle erstellt für jede dieser oben genannten "Dingen". Ähnlich der folgenden:
1 | United States
2 | United Kingdom
3 | Australia
4 | Canada
5 | Italy
etc...
Ich bin die Speicherung dieser Werte in der Benutzer-Tabelle wie folgt:
ID | Country | Device | Computer | Category |
--- | --------- | -------- | ---------- | ----------|
1 | 3 | 2 | 6 | 2 |
2 | 4 | 3 | 9 | 1 |
etc...
Nun jeder der oben genannten zahlen sind im Zusammenhang mit der entsprechenden Tabelle ID.
Was ich will, ist ein Beredtes Abfrage und Suche für alle users
und 'ersetzen' Ihre entsprechenden Werte aus Ihrer helper-Tabelle.
Ich dachte über das tun ein hasOne()
Beredte Beziehung für jedes dieser Dinge in der users
Tisch, aber dann bin ich nicht sicher, wie Sie Sie zu bekommen/Sie zu rufen auf einmal.
Jemand kann mir helfen, tacke dieses Problem?
Bitte korrigieren Sie Ihre tags, um die entsprechende version von Laravel, die Sie verwenden.
Sorry für die Verwirrung, fertig.
Ist ein Benutzer immer nur zu haben, einem Gerät, einem computer und einer Kategorie oder können Sie mehrere, an einem beliebigen Punkt?
Jetzt können Sie nur erhalten, 1 von denen. Ich habe setup erfolgreich die vielen, vielen Beziehungen, die bereits mit pivot-Tabellen, aber ich kann nicht mein Kopf um diesen einen.
InformationsquelleAutor Radical_Activity | 2016-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also in deinem Fall, kann es so etwas wie dieses. Wenn Sie wollen nur eins-Beziehungen kehrte mit der
user
, entfernen Sie die andere.Wenn Sie
dd($user)
, sollten Sie die zugehörigen Modelle in derrelations
array-Attribut.Zugriff auf die Beziehungen und Eigenschaften aus, es ist einfach
$user->device->deviceAttribute
Edit Zum Kommentar:
Beredt davon aus, dass der foreign key mit dem Modell-Namen. Also, wenn Ihr
user
Tisch hat dieid
Spalte, vorausgesetzt, es wird eine Spalte aufdevice
Tabelle namensuser_id
. Wenn Sie dies getan haben, dann sind Sie gesetzt und nichts sollte getan werden.Wenn Sie Ihren Namen der Spalte, beziehen sich auf die Modelle etwas anderes, werden Sie brauchen, um passieren, dass durch die als zweites argument in der Beziehung Methode.
Umgekehrt, wenn Sie wollten, um dem Benutzer das Gerät gehört, Beredt wird versucht, entsprechend der
user_id
Spalte auf der device-Tabelle um denid
- Spalte der user-Tabelle. Nach wie vor, wenn Sie eine andere Spalte zu verwandten, die erklären, die Fremdschlüssel als das zweite argument.Laravel Doc Eins-Zu-Eins-Relation
um sicherzustellen, dass Sie das entsprechende Gerät, computer, etc für den user?
Ja genau. Vielleicht mit
hasMany
? Auf dem Gerät, computer, etc?überprüfen Sie die Bearbeiten. Da Sie erklärten, Sie haben nur eine, mit eine hasMany-Beziehung nicht verwendet.
Vielen Dank, es funktioniert perfecty. Vielen Dank für die Zeit nehmen, die Antwort für diese Fragen, ich Schätze es wirklich! 🙂
InformationsquelleAutor Andrew Nolan
Du suchst:
$books = App\Book::with('author', 'publisher')->get();
Schauen Sie sich die Dokumentation für eager loading mehreren Beziehungen.
InformationsquelleAutor Daniel