Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel hat viele und gehört zu Parametern

Um die Syntax zu vereinfachen, denken Sie an den return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); Parameter als:

  1. Das Modell, das Sie verlinken möchten
  2. Die Spalte der fremden Tabelle (der Tabelle, mit der Sie verknüpfen), die auf die id zurückverweist Spalte der aktuellen Tabelle (es sei denn, Sie geben den dritten Parameter an, in diesem Fall wird dieser verwendet)
  3. Die Spalte der aktuellen Tabelle, die verwendet werden soll - d.h. wenn Sie nicht möchten, dass der Fremdschlüssel der anderen Tabelle auf die id verweist Spalte der aktuellen Tabelle

In Ihrem Fall, weil Sie store_id verwendet haben in den libraries Tisch haben Sie sich das Leben leicht gemacht. Das Folgende sollte perfekt funktionieren, wenn es in Ihrem Store definiert ist Modell:

public function libraries()
{
    return $this->hasMany('App\Library');
}

Hinter den Kulissen verknüpft Laravel automatisch die id Spalte des Store Tabelle zur store_id Spalte der Library Tabelle.

Wenn Sie es explizit definieren wollten, würden Sie es so machen:

public function libraries(){
    return $this->hasMany('App\Library', 'store_id','id');
}
  • Ein Modellstandard ist, dass Funktionen mit Singularnamen ein gehörtzu zurückgeben, während eine Pluralfunktion ein hasMany zurückgibt (z. B. $store->libraries() or $library->store()). ).