Doctrine2 и кастомные поля

Всем привет.
Есть задача, сделать к посту кастомные поля. То есть, есть разделы статей, есть наборы полей. Для каждого раздела свой набор полей. В админке можно добавлять, удалять редактировать наборы полей + привязывать набор к разделам статей. В зависимости от набора полей, при добавлении статьи, показываются разные инпуты.
Например, на Хабре, если выбрать тип "Перевод" - будут показываться поля "Источник" и "Автор оригинального текста". Если выбрать событие - будут показываться "Тип события", "Город", "Адрес", "Стоимость" и т.д.
Нужно то же самое, только управление этими полями должно быть из админки.
В качестве ORM на проекте используется Doctrine2.
Вопрос:
Как лучше сделать такую структуру в БД?
Первое что приходит на ум, это создание дополнительных таблиц (product_details_fieldSetName), с определенным набором полей. При создании нового набора полей делать create table, при изменении делать alter table. И в зависимости от набора полей, джойнить нужную таблицу. Но как такой вариант подружить с Doctrine2?
  • Вопрос задан
  • 2642 просмотра
Решения вопроса 1
Вы ведь только начинаете проект? Может стоит посмотреть в сторону MongoDB?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Yago
Вам подойдет EAV структура.
Ответ написан
kraso4niy
@kraso4niy
fullstack
Сделайте сущность(entity) где будут храниться разные поля. В этой сущности будут хранится: тип поля, название, значения и ссылка(привязка) на сущность к которой это поле привязано. Привязку можно забить строго через yml или анотации, или же написать свой метод/класс для этого.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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