我該如何解決這個問題「Symfony 5.4:參數太少:查詢定義了 2 個參數,但您只綁定了 1 個」?
P粉715304239
P粉715304239 2023-09-02 12:53:54
0
1
558

我想加載所有要在「付款」(Bordereaus) 中支付的「實習生」(Stagiaires)。我想透過選擇日期間隔並透過它們傳遞實習生的屬性來僅選擇那些實習在日期間隔內結束。

「Interns」和「Payment」沒有關係,但有一個表格「Interns_Payment」(Bordereau_stagiaire) 連結到這兩個表。我想透過儲存庫來完成此操作,然後將其載入到我的 PaymentController 的「編輯」中。我是 symfnony 新手

我在我的 Payment(Bordereau)Repository 中編寫了此查詢

 public function findByDate(Bordereau $bordereau){ $query = $this->createQueryBuilder('bo'); return $query->select('bo', 'bord_stag', 'st') ->leftJoin('bo.bordereauStagiaire', 'bord_stag') ->leftJoin('bord_stag.stagiaire', 'st') ->andWhere('st.finStage >= IN(:dateDebut)') ->andWhere('st.finStage <= IN(:dateFin)') ->andWhere('st.isDeleted = IN(:delete)') ->setParameter('delete', false) ->setParameter('dateFin', $bordereau->dateFin) ->setParameter('dateDebut', $bordereau->dateDebut) ->getQuery() ->getResult() ; } 

這是我控制器中的付款(Bordereau)編輯功能

 #[Route('/{id}/edit', name: 'app_bordereau_edit', methods: ['GET', 'POST'])] public function edit(Request $request, Bordereau $bordereau, BordereauRepository $bordereauRepo): Response { $formBordereau = $this->createForm(BordereauEditType::class, $bordereau); $formBordereau->handleRequest($request); if ($formBordereau->isSubmitted() && $formBordereau->isValid()) { $bordereauRepo->save($bordereau, true); dd($bordereau); return $this->redirectToRoute('app_bordereau_index', [], Response::HTTP_SEE_OTHER); } return $this->renderForm('bordereau/edit.html.twig', [ 'bordereau' => $bordereau, 'form' => $formBordereau, ]); } 

我本來希望透過檢查 dd($bordereauRepository); 來獲得結果,但我得到了這個結果。

我搜尋過有關「查詢中的參數太少」的類似問題,但未能成功找到解決方案。

我新增了dateDebut和dateFin的setParamaters。但我無法訪問它。

我應該創建一個自訂形式的 bordereau 嗎?

編2

這是我的新 DQL 函數

public function findByDate(BordereauEditModel $bordereau, bool $isDeleted = false){ $query = $this->createQueryBuilder('bo'); $query ->select('bo', 'bord_stag', 'st') ->leftJoin('bo.bordereauStagiaire', 'bord_stag') ->leftJoin('bord_stag.stagiaire', 'st') ->andWhere('st.isDeleted = :delete') ->setParameter('delete', $isDeleted); if ($bordereau->dateDebut) { $query->andWhere('st.finStage <= :dateDebut') ->setParameter('dateDebut', $bordereau->dateDebut->format('Y-m-d')); } if ($bordereau->dateFin) { $query->andWhere('st.finStage <= :dateFin') ->setParameter('dateFin', $bordereau->dateFin->format('Y-m-d')); } $query ->getQuery() ->getResult() ; } 

它使用我設定的靜態參數列印結果。但對於動態的則不然。

我還創建了一個模型 BordereauEditModel 和一個來自 BordereauEditType 的自訂表單

這是我在 BordereauController 中的edit 函數

 #[Route('/{id}/edit', name: 'app_bordereau_edit', methods: ['GET', 'POST'])] public function edit(Request $request, Bordereau $bordereau, BordereauRepository $bordereauRepository, BordereauEditModel $bordereauEdit): Response { $bordereauEdit = new BordereauEditModel(); $formBordereau = $this->createForm(BordereauEditType::class, $bordereauEdit); $formBordereau->handleRequest($request); if ($formBordereau->isSubmitted() && $formBordereau->isValid()) { $bordereauRepository->findByDate($bordereauEdit); $bordereauRepository->save($bordereau, true); dd($bordereauRepository); return $this->redirectToRoute('app_bordereau_index', [], Response::HTTP_SEE_OTHER); } return $this->renderForm('bordereau/edit.html.twig', [ 'bordereau' => $bordereau, 'form' => $formBordereau, ]); } 

當我嘗試載入動態的時,它顯示「在 null 上呼叫成員函數 format()」。我不知道這是否是另一個問題,我應該從這裡刪除它(即作為主帖中的一個段落,這樣人們就不會感到困惑)

在 null 上呼叫成員函數 format() -> 已解決

P粉715304239
P粉715304239

全部回覆 (1)
P粉394812277

從條件中刪除IN。如果要使用IN進行檢查,則不能使用比較運算子。

public function findByDate(Bordereau $bordereau){ $query = $this->createQueryBuilder('bo'); return $query->select('bo', 'bord_stag', 'st') ->leftJoin('bo.bordereauStagiaire', 'bord_stag') ->leftJoin('bord_stag.stagiaire', 'st') ->andWhere('st.finStage >= :dateDebut') ->andWhere('st.finStage <= :dateFin') ->andWhere('st.isDeleted = :delete') ->setParameter('delete', false) ->setParameter('dateFin', $bordereau->dateFin) ->setParameter('dateDebut', $bordereau->dateDebut) ->getQuery() ->getResult() ; }
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!