Причём здесь Yii2 или не Yii2? Либо делаете один общий супер-маппер с настройками для каждой сущности (как Doctrine), либо для каждой сущности отдельный. Так везде.
Reposirory в Yii2?
Re: Reposirory в Yii2?
нет, продолжаете не понимать. yii2 никак не связан с репозиториями, не предъявляет никаких к ним требований, соответственно нет критериев правильности. Репозитории в любом фремйворке или не фреймворке делаются одинаково - так, как вам нравится (как считаете правильным).
Соответственно вопрос должен звучать не "как правильно в yii2", а "какие подходы есть в создании репозиториев". И на этот вопрос в этом подфоруме отвечали десяток раз с примерами кода.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Reposirory в Yii2?
Если изображения не переиспользуются и если они только для постов — да.Без разницы. Даже по API с ними логичнее работать через $post.
Нравится Yii? Давайте сделаем его лучше!.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Reposirory в Yii2?
В Yii 2 вообще нет правильного или не правильного способа делать репозитории. Показанный способ нормальный. Возможно, можно как-то упростить, чтобы писать меньше кода. Но не факт, что стоит. Может выйти Doctrine.
Нравится Yii? Давайте сделаем его лучше!.
Re: Reposirory в Yii2?
Если это фотки только поста (как в примере), то работаем через Post и сохраняем все $this->photos вместе с постом в PostRepository.
Если фотки сами по себе поштучно - то сама фотка будет отдельным агрегатом Photo со своим PhotoRepository, что к сохранению агрегата поста уже не относится. В API будет свой CRUD для фоток /photos, а у поста своя страница /posts/5/photos для их подключения по photo_id. В этом случае в посте храним коллекцию $this->photoIds из PhodoId, а не из Photo. А в реализации уже подключаем через MANY-to-MANY и дропаем/воссоздаём через deleteAll/batchInsert строки связующей таблицы posts_photos при сохранении поста.