[Yii] Как работать с несколькими похожими сущностями, хранящимися в одной таблице?

Добрый день.



Исходные данные таковы: на сайте имеется несколько одинаковых сущностей — Страница, Акция, Вопрос. Разница лишь в том, как они должны выводиться + у акций и вопросов есть небольшая картинка и краткое текстовое описание (обязательные поля; для страниц их заполнять не нужно). Т.к. в остальном они похожи, то в БД для них можно создать одну таблицу page.



Но возникает вопрос как поступать в моделями, контроллёрами и как правильно настроить роутинг.



Структура адресов нужна такая:

example.com/specials/ — список акций

example.com/questions/ — список вопросов

example.com/question/{title} — страница вопроса

example.com/{title} — любая другая страница



Правильно ли будет использовать для всех трёх сущностей одну модель и один контроллёр (и уже в коде в зависимости от типа делать проверки на заполнение необходимых полей)? Или правильней создать отдельную модель и контроллёр для каждого вида сущностей (в этом случае код будет немного дублироваться, но правила роутинга упростятся)?
  • Вопрос задан
  • 4837 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@duke_nu
Если данные хранятся в одной таблице, модель лучше использовать одну. Разделить валидацию можно при помощи сценариев Валидация форм. По поводу действий, если у тебя 3 контроллера для каждого типа, то обработку формы с разными сценариями лучше поместить в каждый тип контроллера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы