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

Tabelle multiple con relazione da uno a molti (Laravel)

Dovresti usare polymorphic relazioni per questo. Consente a più modelli di utilizzare un unico tavolo.

Dai un'occhiata alla documentazione qui

Nel tuo caso particolare, ciascuna delle tue tabelle farebbe riferimento a un noteable_id colonna e un noteable_type .

Il noteable_id conterrà l'id del (A/B/C) modello.

Il noteable_type conterrà il nome della stringa del modello (A/B/C) .

Il (A/B/C) i modelli ora riceveranno un nuovo attributo:

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

E la note model avvierà le sue proprietà polimorfiche rispetto al nome dell'attributo utilizzato per identificare i tuoi polymorphic ids and types :

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

Ora puoi semplicemente chiamare ->noteable sul (A/B/C) modelli e condividono tutti 1 tabella senza la necessità di un'altra tabella pivot per ogni tabella.