@tiqq

Как правильнее организовать структуру доски объявлений?

Здравствуйте. Прошу знающих mvc паттерн и, в частности, yii2 людей помочь с правильной организацией приложения(доска объявлений с множеством категорий, где у каждой категории есть подкатегории).

Объясните пожалуйста как правильнее на примере одной категории, допустим, "Транспорт" с подкатегориями "Мотоциклы" и "Легковые автомобили":
базу данных я собираюсь организовать таким образом - отдельная таблица для категории "Транспорт", где будут как мотоциклы, так и легковые автомобили, а так же две отдельные таблицы для каждой из подкатегорий. То есть в данном примере будет всего три таблицы. На сайте должны быть три разные страницы: 1 - где весь транспорт отображается с соответствующими фильтрами, 2 - только легковые автомобили с их специфичными фильтрами, 3 - мотоциклы со своими фильтрами. Вопрос: мне нужно создать 3 комплекта контроллер/модель/представление - 1 для категории и 2 для подкатегорий? или подобное как-то более оптимально решается? Буду очень благодарен за любые рекомендации и ликбез.
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
Это зависит от ТЗ. Если структура таблиц и интерфейсы разные, то и контроллер-модель-вью будут разными. Если похожие, то и одного комплекта mvc достаточно.

По-моему, таблица для авто и мото во многом совпадают: производитель, год выпуска, объем двигателя, мощность, цена и пр. Значит, достаточно одной таблицы. Тем более, что будет страница "весь транспорт".
Контроллер и вью тоже, вероятно, по одному достаточно. Но в некоторых случаях можно сделать 2 action, в которых будет различающаяся логика, а общая вынесена в приватный метод.
Ответ написан
Категории хранить в отдельной таблице по принципу Nested Set, таким образом решится вопрос со множественной вложенностью. (у yii2 у картика вроде есть решение для работы с Nested Set)
Далее таблица с транспортом, автомобили, мотоциклы всё вместе, если у одного элемента может быть одна категория, то в этой де таблице создаем столбец с категорией, если нет, то отдельная таблица для связей траснпорта и категорий. Также в этой таблице создаем столбцы только для общих полей, типа наименование, дата изготовления, мощность и т.д
Все атрибуты которые не являются общими, можно организовать по принципу EAV, тоесть сами создаете атрибут, присваиваете его категории, и для каждого элемента категории заполняете данный атрибут.
Ответ написан
Ваш ответ на вопрос

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

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