Mysql
 sql >> Database >  >> RDS >> Mysql

Laravel ha molti parametri e appartiene a

Per semplificare la sintassi, pensa a return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); parametri come:

  1. Il modello a cui vuoi collegarti
  2. 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à)
  3. 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() ).