Задать вопрос
nepster-web
@nepster-web

Как решить проблемы выборки из репозиториев?

Построил себе небольшую сервисную архитектуру, ди, репозитории, все дела.
По мере развития проекта столкнулся с одной проблемой с выборкой.

К примеру у нас есть метод findByAll($limit, $condition), который возвращает несколько записей.
На небольших запросах все круто:
$this->productRepository->findAll(100, ['status' => 1]),


Но, что если это будут товары и нужно делать выборки такого плана:
- достать товары со всеми реляциями
- достать товары только с данными категорий
- достать товары без реляций
- достать товары с пагинацией
- достать товары все кроме некоторых
...

В результате будет, что-то такое:
$this->productRepository->findAll(100, [
 'relations' => ['categories', 'images', 'properties', 'values'],
 'sort' => ['date_create' => DESK],
 'notWhere' => [1, 2, 3]
 ...
])


Господин Александр Зеленин подсказывает, что вместо массива стоит передавать объект, который бы все это дело порешал. Как я понял, что-то похожее на критерию в yii1. Однако в любом случае придется себе в каждом методе интерфейса в репозитория дописывать $condition и реализоваться это дело.

У кого какие взгляды по теме ?
  • Вопрос задан
  • 135 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
уточню, что мой совет касался того, как дать понять какая структура этих массивов должна быть в случае другой реализации интерфейса репозитория. Передавать объект реализации интерфейса Criteria/QueryCondition итд.
Ответ написан
Комментировать
@shagguboy
делаешь каждый вариант своим методом в репозитории.
Ответ написан
Ваш ответ на вопрос

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

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