2017-12-19 3 views
0

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:

  1. Wo muss ich die benutzerdefinierte Beziehung angeben ?
  2. Es ist ein besserer Ansatz, ein intermidate Modell zu erstellen?
  3. Ich muss die Verwendung anpassen, um Methoden anzubringen und abzutrennen? An welchem ​​Ort werde ich es tun müssen?

Grüße

+0

Eloquent hat bereits polymorphe Beziehungen. https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations – Devon

+0

Dank @devon kann das definitiv die Lösung sein. Regarda –

Antwort

0

@Devon Ansatz ist die richtige Lösung für mhy Frage, thanks man!

Verwandte Themen