Как лучше организовать комментарии к разным модулям?

Делаю back-end сайта на Laravel, нужно запилить комментарии к материалам. Но дело в том, что модель комментариев одна, а модулей несколько:
1) блог
2) статьи
3) возможно, будет галерея с комментами

Очень хочется использовать foreign keys в комментариях (если что, БД - PostgreSQL через Eloquent ORM), комментарии должны связываться как "многие к одному" с:

1) ID материала
2) ID юзера

И вот тут я пока вижу два варианта:
1) Сделать таблицу modules, где прописать модули Articles, Blog, Gallery и их ID, затем связать внешним ключом module->id и comment->module_id . Но тогда не ясно, как сделать внешний ключ для entry_id, ведь разные материалы в разных модулях, и id могут вообще совпадать. Как я понимаю, по entry_id внешняя связь в данном случае невозможна.

2) Сделать отдельные таблицы комментариев для разных модулей. Но тут возникают проблемы с синхронизацией изменений в разных таблицах (хотя, можно исхитриться и решить их наследованием), с выборкой комментариев для отдельного юзера (трюк с belongsTo уже не пройдет)

Какой вариант более приемлемый, и может есть другие?
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
amelihovv
@amelihovv
Фулстек веб разработчик
Используйте полиморфное отношение https://laravel.com/docs/5.4/eloquent-relationship...

В доках прям ваш пример описан. Внешних ключей, правда, не будет. Но зато велосипед не нужно будет изобретать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
UksusoFF
@UksusoFF
Вот еще почти готовый вариант: https://github.com/laravelista/comments
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы