Per semplificare la sintassi, pensa a return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
parametri come:
- Il modello a cui vuoi collegarti
- La colonna della tabella esterna (la tabella a cui ti stai collegando) che rimanda all'
id
colonna della tabella corrente (a meno che tu non specifichi il terzo parametro, nel qual caso lo utilizzerà) - La colonna della tabella corrente che dovrebbe essere utilizzata, ovvero se non si desidera che la chiave esterna dell'altra tabella si colleghi all'
id
colonna della tabella corrente
Nella tua circostanza, perché hai usato store_id
nelle libraries
tavolo, ti sei reso la vita facile. Quanto segue dovrebbe funzionare perfettamente se definito nel tuo Store
modello:
public function libraries()
{
return $this->hasMany('App\Library');
}
Dietro le quinte, Laravel collegherà automaticamente l'id
colonna del Store
tabella al store_id
colonna della Library
tabella.
Se volessi definirlo esplicitamente, lo faresti in questo modo:
public function libraries(){
return $this->hasMany('App\Library', 'store_id','id');
}
- Uno standard del modello prevede che le funzioni con nome singolo restituiscano un apparteneTo, mentre una funzione plurale restituisca un hasMany (es.
$store->libraries() or $library->store()
).