Pour simplifier la syntaxe, pensez au return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
paramètres comme :
- Le modèle que vous souhaitez associer
- La colonne de la table étrangère (la table vers laquelle vous créez un lien) qui renvoie à l'
id
colonne de la table courante (sauf si vous spécifiez le troisième paramètre, auquel cas il l'utilisera) - La colonne de la table actuelle qui doit être utilisée - c'est-à-dire si vous ne voulez pas que la clé étrangère de l'autre table soit liée à l'
id
colonne de la table courante
Dans votre situation, car vous avez utilisé store_id
dans les libraries
table, vous vous êtes simplifié la vie. Ce qui suit devrait fonctionner parfaitement lorsqu'il est défini dans votre Store
modèle :
public function libraries()
{
return $this->hasMany('App\Library');
}
Dans les coulisses, Laravel liera automatiquement le id
colonne du Store
table au store_id
colonne de la Library
tableau.
Si vous vouliez le définir explicitement, alors vous le feriez comme ceci :
public function libraries(){
return $this->hasMany('App\Library', 'store_id','id');
}
- Une norme de modèle est que les fonctions nommées au singulier renvoient un appartiennentTo, tandis qu'une fonction au pluriel renvoie un hasMany (c'est-à-dire
$store->libraries() or $library->store()
).