Comments 8
Плохо искал. Мои первые статьи на эту тему были опубликованы в 2017 году,последние в 2022: Идеальный каталог, пример использования https://habr.com/p/599639/
Можно установить с помощью composer:
composer require sbwerewolf/eav-manager
Если на сайте https://packagist.org/ поискать "eav" или "eav ", то в результатах поиска будет не один десяток пакетов.
Но после того как появиламь MongoDb, и особенно после того как в Postgre появилась поддержка JSON (тип данных jsonb), всё это потеряло актуальность.
EAV имеет смысл только как способ генерации таблиц, но эта таблица теряет исторические данные, когда какое то свойство исключается из сущности. При хранении в JSONB ни чего не теряется, индексы для свойств JSON работают так же как для колонок таблицы, но нет лишних колонок, ч о более совместимо с современным способом разработки микросервисов.
Твоя статья требует продолжения с use cases, без этого ни кто не начнет использование, даже ради эксперимента
Это вообще не то. Какие use cases, ты, видимо, документацию не открывал. Почему из-за JSONB теряется актуальность таблиц? Таблицы имеют преимущество из-за наличия схемы. Какие лишние колонки, о чем ты? При чем здесь, вообще, микросервисы...
Что бы ответить на ваши вопросы надо пару статей написать, нет такого желания, столкнётесь в жизни, там и поймёте о чем речь.
Вы пишите " Это вообще не то", вы не считаете что sbwerewolf/eav-manager реализует EAV подход к хранению данных ? не реализует CRUD для каждой части EAV подхода (Entity Attribute Value) ?
Вы пишите у себя в документации:
Attributes may have any plain type values or enum values, defined by the user. They, also, can be singular or multiple.
Binding attributes to one or to many categories or tags. For example, you want to show certain attributes of product only for one or more product categories. Also, you can include attributes of parent categories.
One attribute can be associated with many types of entities and tags.
Converting and inverting EAV to or from database and client side. Internal input validation.
Factory to help you create queries for filtering your entities by attributes with tag bindings checking.
Всё это можно реализовать с помощью sbwerewolf/eav-manager , нет интеграции с фреймворками / ORM-ами / админками, но реализация EAV сделана на 100%. Интеграция с чем либо, вот это уже другое :))
Вот это https://habr.com/ru/articles/323498/? Ну смешно же.
И что смешного ? вы общаетесь как будь то бы с самим собой, написали статью из которой всё понятно только вам, сейчас даёте реплику, которая понятна только вам. Вы если хотите со мной вести диалог, то вам надо сообщить мне контекст, который придаёт значение вашим словам.
Во первых не вот это https://habr.com/ru/articles/323498/, а вот это https://habr.com/p/599639/ . Описание идеи и реализация идеи это не одно и тоже :))
Над чем вы смеётесь ? Над тем что я вам дал ссылку на описание работы библиотекой ("Идеальный каталог, пример использования"), а вы пошли смотреть статью про то как она под капотом работает ("Идеальный каталог, вариант реализации") ?
Короче от смеха там не лопните, вы может быть и умеете что хорошего сделать, но людям донести в доступной форме не можете. А раз людям объяснить не можете как пользоваться вашим изобретением, то пользоваться ни кто не будет. И зачем вы писали статью ?
Да, похоже, вообще не искал, а использует сообщество как экспертную систему :-)
Вот тебе пара ссылок, брат, бери сразу IDEAV, далеко пойдешь.
https://habr.com/ru/companies/neoflex/articles/433058/
https://habr.com/ru/articles/900308/
Если интересно, дам и сам код ядра.
Use case примерно такой, и это годится не только для программиста, но и для пытливого пользователя с архитектурным видением
https://rutube.ru/video/c85b3e7e11dc9f96f0f091d308968126/
У тебя может сильно падать скорость выборки по EAV, если ты используешь JOIN + GROUP BY (или DISTINCT). Подзапросы (semi-joins) будут быстрее. И ты просто партицируешь таблицу, это, хорошо, конечно. Но уже существуют распределенные базы данных, как TiDB, что еще лучше. Там автоматический шардинг, репликации. А в TiDB еще есть и автоматическая репликация в колоночное хранилище, и СУБД сама определяет по характеру запроса откуда лучше делать выборку.
EAV Bundle