Powinieneś używać polymorphic
relacje do tego. Umożliwia wielu modelom korzystanie z jednego stołu.
W Twoim konkretnym przypadku każda z Twoich tabel odwołuje się do noteable_id
kolumna i noteable_type
.
noteable_id
będzie zawierać identyfikator (A/B/C)
model.
noteable_type
będzie zawierać nazwę ciągu modelu (A/B/C)
.
(A/B/C)
modele otrzymają teraz nowy atrybut:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
Oraz note
model zainicjuje swoje właściwości polimorficzne względem nazwy atrybutu używanej do identyfikacji polymorphic ids and types
:
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Teraz możesz po prostu zadzwonić do ->noteable
na (A/B/C)
modele i wszystkie dzielą jeden stół bez potrzeby stosowania kolejnego stołu przestawnego dla każdego stołu.