Aby uprościć składnię, pomyśl o return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); parametry jako:
- Model, z którym chcesz się połączyć
- Kolumna obcej tabeli (tabeli, do której prowadzisz link), która łączy się z
idkolumna bieżącej tabeli (chyba że określisz trzeci parametr, w takim przypadku użyje tego) - Kolumna aktualnej tabeli, która powinna być użyta — np. jeśli nie chcesz, aby klucz obcy drugiej tabeli łączył się z
idkolumna aktualnej tabeli
W Twojej sytuacji, ponieważ użyłeś store_id w libraries tabeli, ułatwiłeś sobie życie. Poniższe powinno działać idealnie, gdy jest zdefiniowane w Twoim Store model:
public function libraries()
{
return $this->hasMany('App\Library');
}
Za kulisami Laravel automatycznie połączy id kolumna Store tabeli do store_id kolumna Library tabela.
Gdybyś chciał to jednoznacznie zdefiniować, zrobiłbyś to w ten sposób:
public function libraries(){
return $this->hasMany('App\Library', 'store_id','id');
}
- Standardem modelowym jest to, że funkcje o pojedynczej nazwie zwracają przynależność do, podczas gdy funkcja w liczbie mnogiej zwraca hasMany (np.
$store->libraries() or $library->store()).