Ich habe 3 Einheiten:Gewohnheit Many-to-Many Beziehung
- Institution
- Niederlassung
- Adresse
Institution & Branch wird viele Adressen haben, so, um nicht zu schaffen Zwei untergeordnete Modelle zum Speichern der Adresse jeder Entität. Ich möchte eine Pivot-Tabelle erstellen, die diese Spalten als Primärschlüssel hat: entity_id, address_id, entity_name. Mit diesem Ansatz werde ich die Beziehung aller Adressen für Institution und Filiale speichern.
Dies ist mein Code in entities_addresses Pivot-Tabelle
Schema::create('entities_addresses', function (Blueprint $table) {
$table->integer('entity_id')->unsigned();
$table->integer('address_id')->unsigned();
$table->string('model_name', 50);
$table->primary(['entity_id','address_id','model_name']);
nächste in Adresse Modell Ich habe den folgenden Code:
public function institutions()
{
return $this->belongsToMany(Institution::class, 'entities_addresses', 'entity_id', 'address_id');
}
nächste in Institution Modell habe ich den folgenden Code
public function buildings()
{
return $this->hasMany(Building::class);
}
Ich glaube, ich muss woanders hinzufügen, die die "benutzerdefinierte" Beziehung ist, weil jetzt bin recieving ich diese Fehlermeldung: SQLSTATE [42S22]: Column nicht gefunden: 1054 Unknown column 'addresses.institution_id'
Also, meine Fragen sind:
- Wo muss ich die benutzerdefinierte Beziehung angeben ?
- Es ist ein besserer Ansatz, ein intermidate Modell zu erstellen?
- Ich muss die Verwendung anpassen, um Methoden anzubringen und abzutrennen? An welchem Ort werde ich es tun müssen?
Grüße
Eloquent hat bereits polymorphe Beziehungen. https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations – Devon
Dank @devon kann das definitiv die Lösung sein. Regarda –