Bagaimanakah saya boleh membetulkan isu ini "Symfony 5.4: Terlalu sedikit parameter: Pertanyaan menentukan 2 parameter tetapi anda hanya mengikat 1"?
P粉715304239
P粉715304239 2023-09-02 12:53:54
0
1
677
<p>Saya mahu memuatkan semua Stagiaires untuk dibayar di Bordereaus. Saya hanya mahu memilih latihan magang yang berakhir dalam selang tarikh dengan memilih selang tarikh dan menghantar atribut pelatih melaluinya. </p><p> "Pelatih" dan "Pembayaran" tidak berkaitan, tetapi terdapat jadual "Pelatihan_Pembayaran" (Bordereau_stagiaire) yang memaut ke kedua-dua jadual. Saya mahu melakukan ini melalui repositori dan kemudian memuatkannya ke dalam Edit PaymentController saya. Saya baru mengenali symfnony</p> <p>Saya menulis pertanyaan ini dalam Repositori Pembayaran(Bordereau)</p> <pre class="brush:php;toolbar:false;"> fungsi awam findByDate(Bordereau $bordereau){ $query = $this->createQueryBuilder('bo'); kembalikan $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('padam', palsu) ->setParameter('dateFin', $bordereau->dateFin) ->setParameter('dateDebut', $bordereau->dateDebut) ->getQuery() ->getResult() ; } </pra> <p>Ini ialah fungsi penyuntingan pembayaran (Bordereau) dalam pengawal saya</p> <pre class="brush:php;toolbar:false;"> #[Laluan('/{id}/edit', nama: 'app_bordereau_edit', kaedah: ['GET', 'POST'])] edit fungsi awam(Minta $request, Bordereau $bordereau, BordereauRepository $bordereauRepo): Respons { $formBordereau = $this->createForm(BordereauEditType::class, $bordereau); $formBordereau->handleRequest($request); jika ($formBordereau->isSubmitted() && $formBordereau->isValid()) { $bordereauRepo->save($bordereau, true); dd($bordereau); return $this->redirectToRoute('app_bordereau_index', [], Respons::HTTP_SEE_OTHER); } kembalikan $this->renderForm('bordereau/edit.html.twig', [ 'bordereau' => $bordereau, 'form' => $formBordereau, ]); } </pra> <p>Saya berharap untuk mendapatkan keputusan dengan menyemak <code>dd($bordereauRepository);</code> tetapi sebaliknya saya mendapat hasil ini. </p> <p>Saya mencari isu yang sama mengenai "Terlalu sedikit parameter dalam pertanyaan" tetapi tidak berjaya mencari penyelesaian. </p> <p><strong>Edit</strong></p> <p>Saya menambah setParamaters untuk dateDebut dan dateFin. Tetapi saya tidak boleh mengaksesnya.</p> <p>Perlukah saya mencipta bentuk tersuai bordereau? </p> <p><strong>Edit 2</strong></p> <p>Ini ialah fungsi DQL baharu saya</p> <pre class="brush:php;toolbar:false;">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() ; } </pra> <p>Ia mencetak keputusan menggunakan parameter statik yang saya tetapkan. Tetapi bukan untuk yang dinamik.</p> <p>Saya juga mencipta model <code>BordereauEditModel</code> dan borang tersuai</p> daripada <code>BordereauEditType</code> <p>Ini ialah fungsi <kod>edit</code> dalam <code>BordereauController</code> <pre class="brush:php;toolbar:false;"> #[Route('/{id}/edit', name: 'app_bordereau_edit', kaedah: ['GET', 'POST'])] edit fungsi awam(Minta $request, Bordereau $bordereau, BordereauRepository $bordereauRepository, BordereauEditModel $bordereauEdit): Respons { $bordereauEdit = new BordereauEditModel(); $formBordereau = $this->createForm(BordereauEditType::class, $bordereauEdit); $formBordereau->handleRequest($request); jika ($formBordereau->isSubmitted() && $formBordereau->isValid()) { $bordereauRepository->findByDate($bordereauEdit); $bordereauRepository->save($bordereau, true); dd($bordereauRepository); return $this->redirectToRoute('app_bordereau_index', [], Respons::HTTP_SEE_OTHER); } kembalikan $this->renderForm('bordereau/edit.html.twig', [ 'bordereau' => $bordereau, 'form' => $formBordereau, ]); } </pra> <p>Apabila saya cuba memuatkan dinamik ia tertera "Format fungsi ahli() dipanggil pada nol". Saya tidak tahu sama ada ini soalan lain dan saya harus mengalih keluarnya dari sini (iaitu sebagai perenggan dalam catatan utama supaya orang ramai tidak keliru) </p> <p>Format fungsi ahli panggilan() pada null ->
P粉715304239
P粉715304239

membalas semua(1)
P粉394812277

Alih keluar IN。如果要使用IN daripada syarat untuk menyemak, anda tidak boleh menggunakan operator perbandingan.

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()
    ;
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan