Народ, а вот есть такая практика, что запросы в бд

и всякие выборки хранят в *Repository классах.

А как в yii2 корректно такое сделать? трейты к модели пристыковывать или отдельную директорию repositories и там UsersRepository и тп создавать классы?

6 ответов

11 просмотров

Конкретно в yii2 обычно такое не делают, тк есть AR и выборки можно делать на уровне сервисов/контроллеров. Но в теории да, ничего не мешает создать папку repositories и в ней хранить запросы. Можно у Елисеева посмотреть в гугле "Реализация репозитория с AR yii2"

Отдельно репозитории - нарушит принятый в Yii2 паттерн ActiveRecord. Он сейчас считается антипаттерном, но тем не менее это официальный подход фреймворка и тут дело каждого - выбирать, что лучше. Стандартный подход Yii2 с выделением БД-specific части - это классы *Query к модели. User и UserQuery, где будут описаны дополнительные условия выборки. Что-то типа scope в ларавеле.

⁣Scarab Scarab
Отдельно репозитории - нарушит принятый в Yii2 пат...

ну какие-то штуки для запросов иметь нужно, а иногда для сложной записи

сырный продукт
ну какие-то штуки для запросов иметь нужно, а иног...

Я такое больше в сервисы выношу. Не потому что против репозиториев, а просто чтоб не ломать.

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

Обсуждают сегодня

Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Это переведённый текст с английского. Я не говорю на русском, но могу использовать переводчик Телеграм. Приветствую! Я начинающий веб-разработчик и все еще учусь. В настояще...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
2
А не хотим ли мы развлечься? 😉 Но так чтобы с пользой для наших профессиональных навыков?? 👨‍🎓👩‍🎓 Предлагаю на октябрь запланировать тестовый запуск новой командной игры "Игр...
Andrii Kurdiumov
2
у кого сколько оперативы на базе данных ?
АДИЛЬБЕК
4
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
5
Через бот апи возможно получить ID стикерпака? Не ссылку.
Vexylon [АФК до 09.09]
5
Привет Хочу сделать аналог iCloud’а для своих проектов, чтобы пользовательская информация хранилась в облаке, была доступна во всех сервисах, её можно было подсасывать везде)...
Виталий
9
В тг можно спарсить всех кто пишет в группе? Если список участников скрыт
S
3
код Event::listen('cms.page.display', function (&$content, $slug, $page, $html) { if (is_object($content)) { dump($content); } else { dump($s...
Point 111
3
Доброе утро, мультиязычные сайты делал кто-нибудь? Какие подводные камни? Нужно чего нибудь допом ставить? Как поступить? В теории сделать две папки ru en и туда кидать страни...
Racoon Mitya
2
Карта сайта