cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah saya boleh membetulkan isu ini "Symfony 5.4: Terlalu sedikit parameter: Pertanyaan menentukan 2 parameter tetapi anda hanya mengikat 1"?

<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粉715304239P粉715304239444 hari yang lalu670

membalas semua(1)saya akan balas

  • P粉394812277

    P粉3948122772023-09-03 10:09:17

    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()
        ;
    }
    

    balas
    0
  • Batalbalas