如何在控制器内部优化Symfony4 Doctrine Repository的使用

时间:2019-03-13 11:29:11

标签: php symfony doctrine-orm doctrine symfony4

我正在寻找Symfony 4控制器中Doctrine存储库的优化用法。

此刻,我必须构建如下代码:

DateTime dCalcDate = DateTime.Now;
var startDate = new DateTime(Convert.ToInt32(Year), Convert.ToInt32(Month), 1);
var endDate = new DateTime(Convert.ToInt32(Year), Convert.ToInt32(Month), DateTime.DaysInMonth((Convert.ToInt32(Year)), Convert.ToInt32(Month)));

说实话,我不喜欢这种方法。如果必须使用/** @var ArticleRepository $repository */ $repository = $this->getRepository(Article::class); $articles = $repository->findBySearchterm($search_term); ,则必须通过额外的注释告诉PHPStorm,该方法的返回类型为$this->getRepository(Article::class)。否则,PHPStorm会警告我,所调用的方法ArticleController是未知的。

我想对此进行优化并直接使用ArticleRepository,例如:->findBySearchterm($search_term);

是否有机会构建某些东西以直接访问存储库,而无需获取存储库的开销?我认为这也会提高代码的可读性。

1 个答案:

答案 0 :(得分:3)

您可以将存储库直接注入到控制器方法中,如下所示:

public function index(ArticleRepository $repository)
{
    $articles = $repository->findBySearchterm($search_term);
    // The rest of the code
}

这是通过symfony autowiring

完成的