簡體   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