Symfony:存储库应仅包含对数据库的查询吗?

时间:2018-10-09 13:06:39

标签: php symfony doctrine repository

假设我们在存储库中有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中还是应该将其放入服务(FormatterManager?)

1 个答案:

答案 0 :(得分:3)

存储库是一种模式,表示处理应用程序和数据源之间的通信的体系结构层。
我认为您需要将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;
    }   
}