sql >> Databasteknik >  >> RDS >> Mysql

Flera tabeller med en till många relation (Laravel)

Du bör använda polymorphic relationer för detta. Det tillåter flera modeller att använda en enda tabell.

Ta en titt på dokumentationen här

I ditt specifika fall skulle var och en av dina tabeller referera till ett noteable_id kolumn och en noteable_type .

noteable_id kommer att innehålla ID:t för (A/B/C) modell.

noteable_type kommer att innehålla strängnamnet för modellen (A/B/C) .

(A/B/C) modeller kommer nu att få ett nytt attribut:

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

Och note modellen kommer att initiera dess polymorfa egenskaper mot attributnamnet som används för att identifiera dina polymorphic ids and types :

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

Nu kan du helt enkelt ringa ->noteable(A/B/C) modeller, och de delar alla 1 bord utan behov av ytterligare en pivottabell för varje tabell.




  1. ALTER SESSION SET nls_date_format fungerar inte i APEX. Fungerar dock i SQL Developer

  2. Byt stor webbplats från MySQL till MySQLi

  3. Hur ansluter jag till en MySQL-databas från Clojure?

  4. Varför returnerar mysql_query() TRUE med en SELECT-sats?