Есть ли в 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 или что-то в этом духе фильтры подходят. Хотя стоит избегать вообще любых глобальных хендлеров, излишне использовать ивенты и т.д.

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

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

Войти через центр авторизации
Похожие вопросы