Ich muss leider Daten von einem Drittanbieter importieren und ihr nicht standardmäßiges Datenbankschema mit meinem Laravel-Projekt verwenden. Außerdem muss ich mehrere "Firmen" mit jeweils eigenen Benutzern in meiner Datenbank speichern.Laravel-Beziehungen mit zusammengesetzten Nicht-Standard-Fremdschlüsseln
Ich versuche herauszufinden, der beste Weg (wenn es möglich ist), Eloquent zu verwenden, um die Beziehungen zwischen diesen Tabellen zu behandeln. So zum Beispiel mit meiner Tabellenstruktur wie folgt aus:
BmPerson
'id',
'firmId',
'personId'
BmCoverage
'id',
'firmId',
'personId',
'securityId'
BmSecurity
'id',
'firmId',
'securityId'
... zum Beispiel, ich brauche eine „BmPerson“ mit vielen „BmSecurity“ durch die „BmCoverage“ Tabelle zu verknüpfen.
Aber ich muss irgendwie Verbundschlüssel verwenden, weil ich mehrere "Firmen" in jeder Tabelle (nach dem Datenbankschema des Drittanbieters) speichern.
Ein Ansatz, den ich verwendet habe, so weit ist Scoping, zB: für mein BmCoverage Modell:
public function scopeFromFirm($query,$firmId){
return $query->where('firmId','=',$firmId);//->where('personId','=',$personId);}
public function scopeFromPerson($query,$personId){
return $query->where('personId','=',$personId);//->where('personId','=',$personId);}
Dann kann ich die Abdeckung Liste für eine einzelne Person abrufen, aber ich muss noch irgendwie in der Lage sein Ordnen Sie "BmCoverage" den "BmSecurities" zu. Ich nehme an, ich könnte auch einen Bereich der BmSecurities-Klasse hinzufügen, aber es wäre schöner, einfach Eloquent zu verwenden.
Hat jemand eine gute Möglichkeit gefunden, zusammengesetzte Schlüssel in Laravel-Modellbeziehungen zu verwenden, oder sollte ich einfach bei der Scoping-Methode bleiben?
Wie sehen Ihre Modellbeziehungen aus? –
Warum haben Sie 2 BmCoverage ?. –
Entschuldigung, ich habe die zweite gelöscht - war ein Duplikat. Momentan kann ich diese Modelle nicht zuordnen, da ich dies über 2 Schlüssel tun müsste (z. B. firstId und personId im Falle der Verbindung von BmPerson mit BmCoverage). Ist das sinnvoll? Ich habe eine eindeutige ID-Spalte, aber ich muss in der Lage sein, basierend auf 2 Schlüsseln statt einer zu beziehen. –