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