2017-06-18 5 views
0

Also, ich habe ein File Modell, und ich habe ein Dependency Modell, das wird angeben, ob eine bestimmte File Instanz von einem anderen abhängig ist. (Man denke Paketverwaltung.) Die dependencies Tabelle ist sehr einfach:Laravel Modell Beziehung auf assoziativen Tabelle

id     PRIMARY 
file_id   INTEGER UNSIGNED 
depends_on_file_id INTEGER UNSIGNED 

Die files Tabelle verwendet auch id für einen Primärschlüssel.

Aber ich war nicht in der Lage, meinen Kopf um den richtigen Weg zu wickeln, um die Beziehung auf dem Modell aufzubauen. Ich dachte, es wäre:

public function deps() 
    { 
     $this->belongsToMany('App\File', 'dependencies', 'file_id', 'id'); 
    } 

Aber wenn ich versuche, es zu benutzen:

>>> $f = App\File::find(2); 
=> App\File {#706 
    id: 2, 
    {redacted irrelevant properties here}, 
    } 
>>> $f->deps(); 
=> null 

Nicht eine Sammlung überhaupt zu bekommen. Es gibt eine einzelne Reihe von gesetzten Daten, wobei file_id 2 depends_on_file_id 1.

Was fehlt mir hier bitte?

Antwort

1

Sagen Sie übrigens die Tabellen, es ist nicht viele-zu-viele, aber one-to-many Beziehung, die Sie hier haben: eine Datei kann viele Abhängigkeiten haben. Die Tatsache, dass Sie zwei Fremdschlüssel in der Tabelle dependencies haben, wird nicht in Viele-zu-Viele-Werten übernommen, da beide Fremdschlüssel auf dieselbe Tabelle verweisen - files. Wenn Sie die relation richtig eingerichtet haben, können Sie loslegen.

file.php Modell

public function departments() { 
    return $this->hasMany('App\Department', 'file_id', 'id'); 
} 

Department.php Modell

public function files() { 
    return $this->belongsTo('App\File'); 
} 

Die Beziehung oben nicht getestet wurde, aber Sie bekommen die Idee.

+0

Das gibt immer noch eine leere Menge zurück, aber vorläufig arbeite ich daran, indem ich zB '$ d = App \ Dependency :: where ('file_id', 2) -> get(); . Ich schätze die Plausibilitätsprüfung, aber ich habe lange genug mit Modellen angefangen, dass Beziehungen keinen Sinn ergeben. –

+0

Scheint wie die Beziehung falsch eingerichtet ist. Wie ich geschrieben habe, habe ich es nicht getestet. Aber ich würde sagen, du bist auf dem richtigen Weg. – lesssugar