Symfony: должны ли репозитории содержать только запросы к базе данных? - PullRequest
0 голосов
/ 09 октября 2018

Предположим, у нас есть 2 метода в хранилище:

public function findByMonth($month) {
    // ... DQL query to the database
}


public function findByYear($year)
   $year = ... ;
   $result = [];

   for (...) {
       $month = ... ;
       $result[] = $this->findByMonth($month);
   }

   return $result;
}   

Второй метод не выполняет запрос к базе данных.Он вызывает только первый метод и создает цикл и некоторые логические корректировки.

Должен ли он оставаться в Repository или идти в службу (Formatter? Manager?)

1 Ответ

0 голосов
/ 09 октября 2018

Репозиторий - это шаблон, представляющий архитектурный уровень, который управляет связью между приложением и источником данных.
По моему мнению, вам нужно переместить функцию findByYear в службу, которая вызывает метод репозитория.

Как это:

class YourService 
{
    private $repository;

    public function __construct(YourRepository $repository)
    {
         $this->repository = $repository;
    }

    public function findByYear($year)
    {
        $year = ... ;
        $result = [];

        for (...) {
            $month = ... ;
            $result[] = $this->repository->findByMonth($month);
        }

        return $result;
    }   
}
...