我正在寻找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);
是否有机会构建某些东西以直接访问存储库,而无需获取存储库的开销?我认为这也会提高代码的可读性。
答案 0 :(得分:3)
您可以将存储库直接注入到控制器方法中,如下所示:
public function index(ArticleRepository $repository)
{
$articles = $repository->findBySearchterm($search_term);
// The rest of the code
}
这是通过symfony autowiring
完成的