2013-06-23 2 views
0

Celui-ci me dérange et Google n'a pas été utile. J'ai deux modèles, un modèle de danse et un modèle d'auteur. La relation est qu'un auteur peut avoir beaucoup de danses. La ride est qu'il y a en fait deux relations entre ces objets, comme il y a l'auteur original et un auteur crédité plus tard de reconstruire la danse (ce sont des danses historiques, après tout). Je peux charger avec la fonction load() pour la relation qui utilise la clé étrangère normale, mais je ne peux pas trouver comment charger avec empressement la relation qui utilise une clé étrangère nommée différemment.Eloquent Eager Load Double Relation

Comment est-ce que je fais un chargement passionné sur cette deuxième relation?

+0

vous devrez poster votre code, pour toute personne pour aider – KyleK

Répondre

1

Lors de la mise en place d'une relation avec une autre clé étrangère, vous devez indiquer dans la relation qui touche vous utilisez veux ... return $this->hasOne('Author', 'foreign-key');

Donc, si je comprends bien votre question, vous voulez configurer une relation à deux auteurs, la même table auteur ....

Alors peut-être quelque chose comme ça alors ?? (Remplacez foreign_key avec votre champ de table)

public function orig_author(){ 
return $this->hasOne('Author'); 
} 

public function second_author(){ 
return $this->hasOne('Author', 'foreign-key'); 
} 

public function dance(){ 
return $this->hasMany('Dance'); 
} 

Ensuite, il suffit récupérer comme si ... ($id being the id of your dance)

$dance = Dance::with('orig_author','second_author')->find($id); 

Mais pour être honnête, je ne l'ai jamais essayé d'avoir une double relation avec une table. .... laissez-moi savoir si cela fonctionne pour vous. :) Id être très intéressé.

+0

Je voulais juste vous faire savoir que je le test, mais je ne veux pas accepter la réponse, au moins sans confirmation ou des notes sur comment la vraie solution finit légèrement différemment jusqu'à ce que j'ai confirmé une syntaxe de travail. Jusqu'à présent, cependant, ça a l'air bien. –

+0

Enfin arrivé à un point où je peux définitivement tester cela. Oui, cela fonctionne pour moi. J'avais mal compris la documentation pour 'with()' être que vous lui fournissiez le (s) nom (s) du modèle, où en réalité vous lui donnez les noms des fonctions qui renvoient les relations. Remarque: Votre exemple doit être mis à jour pour être "public function orig_author" au lieu de "public class orig_author". ;) –

+0

Heureux son travail pour vous:) .... mais wow je ne peux pas croire que j'ai raté cette chose de classe/fonction ...... lol – KyleK

Questions connexes