Mysql
 sql >> Base de données >  >> RDS >> Mysql

Paramètres Laravel hasMany et AppartientTo

Pour simplifier la syntaxe, pensez au return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); paramètres comme :

  1. Le modèle que vous souhaitez associer
  2. 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)
  3. 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() ).