sql >> Database >  >> RDS >> Mysql

Laravel hasMany en hoort bij parameters

Om de syntaxis te vereenvoudigen, denk aan de return $this->hasMany('App\Comment', 'foreign_key', 'local_key'); parameters als:

  1. Het model waarnaar u wilt linken
  2. De kolom van de buitenlandse tabel (de tabel waarnaar u linkt) die teruglinkt naar de id kolom van de huidige tabel (tenzij u de derde parameter specificeert, in welk geval het die zal gebruiken)
  3. De kolom van de huidige tabel die moet worden gebruikt - d.w.z. als u niet wilt dat de externe sleutel van de andere tabel naar de id linkt kolom van de huidige tabel

In jouw geval, omdat je store_id . hebt gebruikt in de libraries tafel, je hebt het jezelf gemakkelijk gemaakt. Het onderstaande zou perfect moeten werken als het is gedefinieerd in uw Store model:

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

Achter de schermen koppelt Laravel automatisch de id kolom van de Store tabel naar de store_id kolom van de Library tafel.

Als je het expliciet wilt definiëren, dan zou je het als volgt doen:

public function libraries(){
    return $this->hasMany('App\Library', 'store_id','id');
}
  • Een modelstandaard is dat enkelvoudig benoemde functies een behoortTo retourneren, terwijl een meervoudsfunctie een hasMany retourneert (dwz $store->libraries() or $library->store() ).


  1. Linker join met voorwaarde

  2. FOUT:kon het bestand "$libdir/plpython2" niet openen - FOUT:kon het bestand "$libdir/plpython3" niet openen

  3. MySQL 8 instellen vanuit Binary Tarball

  4. Gegroepeerde aaneenschakeling :Duplicaten bestellen en verwijderen