[英]How to reach doctrine repository in private (non-route) function in symfony5?
当我需要访问公共 function 中的实体存储库时,我通常会为它注入 function 的参数,例如
public function showAction(DebitPeriod $debitPeriod, ExtraOpeningRepository $extraOpeningRepository)
但是,当我有一个私有 function(仅作为 controller 路由之一的子功能)时,我如何从那里到达实体存储库?
我希望能够像这样使用它
use App\Repositories\ExtraOpeningRepository;
private function assembleEntries($units,$day = null) {
$eor = new ExtraOpeningRepository;
}
或者像这样
private function assembleEntries($units,$day = null, ExtraOpeningRepository $extraOpeningRepository) {
我得到的错误是这样的:
太少 arguments 到 function App\Repository\ExtraOpeningRepository::__construct(), 0 passed
我不想像这样从路线 controller 一直向前链接它:
public function showAction(DebitPeriod $debitPeriod, ExtraOpeningRepository $extraOpeningRepository) {
$units = 1;
$dataset = $this->assembleEntries($units,null,$extraOpeningRepository);
}
private function assembleEntries($units,$day = null, ExtraOpeningRepository $extraOpeningRepository) {
//do stuff
}
有没有办法让它变得更干净,而不会像上面的例子那样混乱?
根据 Cerad 的评论,这是成功的结果 =)
use App\Repository\ExtraOpeningRepository;
class EntryController extends AbstractController
{
private $extraOpeningRepository;
public function __construct(ExtraOpeningRepository $extraOpeningRepository)
{
$this->extraOpeningRepository = $extraOpeningRepository;
}
private function assembleEntries($units,$day = null)
{
$extraOpenings = $this->extraOpeningRepository->findForDay($output[$i]['dateToFetch']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.