sql >> Databáze >  >> RDS >> Mysql

Více tabulek s jedním až mnoha vztahem (Laravel)

Měli byste používat polymorphic vztahy za to. Umožňuje více modelům využívat jednu tabulku.

Podívejte se na dokumentaci zde

Ve vašem konkrétním případě by každá z vašich tabulek odkazovala na noteable_id sloupec a noteable_type .

noteable_id bude obsahovat id (A/B/C) model.

noteable_type bude obsahovat název řetězce modelu (A/B/C) .

(A/B/C) modely nyní získají nový atribut:

/**
 * (A/B/C) Model(s)
 */
public function notes()
{
    return $this->morphMany('App\Notes', 'noteable');
}

A note model zahájí své polymorfní vlastnosti podle názvu atributu použitého k identifikaci vašich polymorphic ids and types :

/**
 * Note Model
 */
public function noteable()
{
    return $this->morphTo();
}

Nyní můžete jednoduše zavolat ->noteable na (A/B/C) a všechny sdílejí 1 tabulku, aniž by pro každou tabulku potřebovaly další kontingenční tabulku.




  1. rake db:create chyba kódování s postgresql

  2. Role neexistuje a nelze vytvořit databázi při použití PostgreSQL

  3. PHPExcel a zalamování textu

  4. Zvyšte sloupec v MySQL