Трябва да използвате polymorphic
отношения за това. Позволява на множество модели да използват една таблица.
Разгледайте документацията тук
Във вашия конкретен случай всяка от вашите таблици ще препраща към noteable_id
колона и noteable_type
.
noteable_id
ще съдържа идентификатора на (A/B/C)
модел.
noteable_type
ще съдържа името на низа на модела (A/B/C)
.
(A/B/C)
моделите вече ще получат нов атрибут:
/**
* (A/B/C) Model(s)
*/
public function notes()
{
return $this->morphMany('App\Notes', 'noteable');
}
И note
моделът ще инициира своите полиморфни свойства срещу името на атрибута, използвано за идентифициране на вашите polymorphic ids and types
:
/**
* Note Model
*/
public function noteable()
{
return $this->morphTo();
}
Сега можете просто да извикате ->noteable
на (A/B/C)
модели и всички те споделят една таблица, без да е необходима друга обобщена таблица за всяка таблица.