Построил себе небольшую сервисную архитектуру, ди, репозитории, все дела.
По мере развития проекта столкнулся с одной проблемой с выборкой.
К примеру у нас есть метод 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 и реализоваться это дело.
У кого какие взгляды по теме ?