Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Parâmetros Laravel hasMany e belongsTo


Para simplificar a sintaxe, pense no return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); parâmetros como:
  1. O modelo ao qual você deseja vincular
  2. A coluna da tabela estrangeira (a tabela à qual você está vinculando) que vincula de volta ao id coluna da tabela atual (a menos que você esteja especificando o terceiro parâmetro, nesse caso ele usará isso)
  3. A coluna da tabela atual que deve ser usada - ou seja, se você não quiser que a chave estrangeira da outra tabela seja vinculada ao id coluna da tabela atual

Em sua circunstância, porque você usou store_id nas libraries mesa, você facilitou a sua vida. O abaixo deve funcionar perfeitamente quando definido em sua Store modelo:
public function libraries()
{
    return $this->hasMany('App\Library');
}

Nos bastidores, o Laravel vinculará automaticamente o id coluna da Store tabela para o store_id coluna da Library tabela.

Se você quisesse defini-lo explicitamente, faria assim:
public function libraries(){
    return $this->hasMany('App\Library', 'store_id','id');
}
  • Um modelo padrão é que funções com nome singular retornam um belongsTo, enquanto uma função plural retorna um hasMany (ou seja, $store->libraries() or $library->store() ).