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.