sql >> Base de Datos >  >> RDS >> Mysql

Laravel tiene muchos y pertenece a parámetros

Para simplificar la sintaxis, piense en return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); parámetros como:

  1. El modelo al que desea vincular
  2. La columna de la tabla externa (la tabla a la que se está vinculando) que se vincula con el id columna de la tabla actual (a menos que esté especificando el tercer parámetro, en cuyo caso lo usará)
  3. La columna de la tabla actual que debe usarse, es decir, si no desea que la clave externa de la otra tabla se vincule al id columna de la tabla actual

En su caso, porque ha utilizado store_id en las libraries table, te has hecho la vida más fácil. Lo siguiente debería funcionar perfectamente cuando se define en su Store modelo:

public function libraries()
{
    return $this->hasMany('App\Library');
}

Detrás de escena, Laravel vinculará automáticamente el id columna de la Store tabla al store_id columna de la Library mesa.

Si quisiera definirlo explícitamente, lo haría así:

public function libraries(){
    return $this->hasMany('App\Library', 'store_id','id');
}
  • Un modelo estándar es que las funciones con nombres singulares devuelven un pertenece a, mientras que una función en plural devuelve un hasMany (es decir, $store->libraries() or $library->store() ).