繁体   English   中英

如何在 symfony5 中到达私有(非路由)function 中的 doctrine 存储库?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM