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
id
kolumna 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
id
kolumna 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()
).