Искал реализацию EAV (Entity-Attribute-Value) паттерна на PHP или Symfony и не нашел. Типичная задача, но, на удивление, нет таких библиотек. Решил сделать свою — EAV bundle (GitHub). Есть достаточно подробная документация.
Основные возможности:
Атрибуты могут иметь значения любого типа (single type) или перечисления (enum), определяемые пользователем. Они также могут быть одиночными или множественными.
Привязка атрибутов к одной или нескольким категориям или тегам. Например, вы хотите отображать определённые атрибуты товара только для одной или нескольких категорий товаров. Также можно включить атрибуты родительских категорий.
Один атрибут может быть связан с несколькими типами сущностей и тегов.
Конвертирование и инвертирование EAV в базу данных и из неё на стороне клиента. Внутренняя проверка входных данных.
Фабрика для создания запросов на фильтрацию сущностей по атрибутам с проверкой привязки тегов.
Слушатель, который проверяет изменённые теги, атрибуты, сущности и удаляет потерянные EAV из базы данных.
Готовый к использованию пользовательский интерфейс CRUD для EAV, основанный на Symfony Forms и интегрированный с EasyAdmin.
Было бы неплохо еще реализовать создание сущностей через MakerBundle, чтение опций из PHP атрибутов сущности, ре��лексии и некоторые другие возможности.
