Есть ли в Symfony 2 аналог скоупов Yii?

Здравствуйте. Скажите пожалуйста, есть ли в Symfony 2 аналог скоупов Yii? Скоупы отличное удобное решение, но в Symfony не нашел нормального инструмента для построения запросов решающий такие же проблемы.
// Используется Doctrine
  • Вопрос задан
  • 2501 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну начнем с того что Symfony не имеет никакого отношения к доктрине.

Далее... какие проблемы решают скоупы? Уменьшение дублирования кода при построении запросов с использованием DbCriteria? Ну так в Doctrine в принципе нету таких проблем так как нету этой самой DbCriteria и все обычно в одном месте. Если вам нужны удобные методы для выборок, просто делаете методы в репозитории. Это эдакий бэст-практис, инкапсулировать всю логику по работе с базой в какой-то сервис.

Если брать дефолтные скоупы (те что default и навешиваются на каждый запрос) то аналогом будут фильтры. doctrine-orm.readthedocs.org/en/latest/reference/f... Их можно отключать, так же как и в Yii можно делать resetScope.

Почему именно default? да потому что для других случаев вообще не стоит делать подобные штуки а просто инкапсулировать всю логику по выборкам данных в репозиторий и вообще все что касается хранения сущностей в базе туда же выносить и регистрировать как сервис. А вот случаи когда мы хотим во всех запросах исключить выборку элементов с disabled=0 или что-то в этом духе фильтры подходят. Хотя стоит избегать вообще любых глобальных хендлеров, излишне использовать ивенты и т.д.

Можно просто объявить репозиторий базовый с какими-то хелперами для построения запросов и наследовать свои репозитории от него, но обычно выборки настолько различаются что вы только сделаете себе больно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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