Pro zjednodušení syntaxe si představte return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
parametry jako:
- Model, na který chcete odkazovat
- Sloupec cizí tabulky (tabulka, na kterou odkazujete), který odkazuje zpět na
id
sloupec aktuální tabulky (pokud neurčíte třetí parametr, v takovém případě jej použije) - Sloupec aktuální tabulky, který by měl být použit – tj. pokud nechcete, aby cizí klíč druhé tabulky odkazoval na
id
sloupec aktuální tabulky
Ve vaší situaci proto, že jste použili store_id
v libraries
stole, usnadnili jste si život. Níže uvedené by mělo fungovat perfektně, pokud je definováno ve vašem Store
model:
public function libraries()
{
return $this->hasMany('App\Library');
}
V zákulisí Laravel automaticky propojí id
sloupec Store
tabulky na store_id
sloupec Library
tabulka.
Pokud byste to chtěli explicitně definovat, udělali byste to takto:
public function libraries(){
return $this->hasMany('App\Library', 'store_id','id');
}
- Standard modelu spočívá v tom, že funkce s jediným názvem vracejí includeTo, zatímco funkce v množném čísle vrací hasMany (tj.
$store->libraries() or $library->store()
).