Ich habe geerbt 4 MySQL-Tabellen:Eloquent belongsToMany withPivot Mapping
Listings
-id
-description
...
Standorte
-id
-listing_id
Führer
-id
-name
....
guide_location
-id
-guide_id
-location_id
Eintrag => (viele) Locations
Guide => (viele) Standorte => (1) Listing
Listing, Location und Guide ist jeweils ein eigenes Modell in einer Laravel Dingo-Anwendung. Hier ist das Setup:
//Listing model
public function locations()
{
return $this->hasMany('Location');
}
Dann
//Location model
public function guides()
{
return $this->belongsToMany('Guide');
}
public function listing()
{
return $this->belongsTo('Listing');
}
Und
//Guide model
public function locations()
{
return $this->belongsToMany('Location');
}
Ich habe eine Spalte guide_location hinzugefügt, und ich will es zurück, wenn ich einen Leitfaden aus der Auswahl Datenbank.
So jetzt:
guide_location
-id
-guide_id
-location_id
-Stellung
Ich versuchte ->withPivot('position')
sowohl belongsToMany()
Anweisungen im Handbuch und Standortmodelle Hinzufügen aber es funktioniert nicht, ich sehe die neue Spalte nicht.
Irgendwelche Ideen, was ich falsch mache?
Ich bin ein wenig verwirrt, wenn Sie gerade eine Spalte hinzugefügt haben, warum müssen Sie zu einer anderen Tabelle drehen? Oder haben Sie eine fünfte Tabelle eingeführt, und wenn Sie nach dem 'Guide' suchen, der' Guide Location' zurückgibt, möchten Sie auch, dass 'Guide Location' mit dem Ergebnis seiner' position relations' zurückkehrt ? – Ohgodwhy
Vielleicht ist withPivot nicht der Befehl, den ich brauche? Aus den [Dokumenten] (https: // laravel.com/docs/5.1/eloquent-relations) es schlug vor, dass dies der einzige Weg war, diesen anderen Wert einzuziehen, es sei denn, ich lese ihn falsch. "Standardmäßig sind nur die Modellschlüssel auf dem Pivot-Objekt vorhanden Tabelle enthält zusätzliche Attribute, die Sie beim Definieren der Beziehung angeben müssen: " – OrdinaryHuman
Das ist nur dann der Fall, wenn Sie eine Pivot-Tabelle verwenden, aber in diesem Fall ist' guide_location' keine Pivot-Tabelle sogar polymorph, es hat nur viele Einschränkungen. wenn ich '$ guide = Guide :: find ($ id) -> mit ('guide_location') abfrage;' Ich würde erwarten, dass ich eine 'position'-Spalte bei meiner Rückkehr sehe, wenn man den oben angegebenen Code verwendet. Haben Sie tatsächlich eine Positionstabelle, die Sie über die Tabelle "guide_location" verknüpfen möchten? – Ohgodwhy