Je souhaite charger tous les Stagiaires à payer en Bordereaus. Je souhaite sélectionner uniquement les stages qui se sont terminés dans l'intervalle de dates en sélectionnant les intervalles de dates et en leur transmettant les attributs du stagiaire.
"Stagiaires" et "Paiement" ne sont pas liés, mais il existe une table "Interns_Payment" (Bordereau_stagiaire) qui renvoie aux deux tables. Je souhaite le faire via un référentiel, puis le charger dans l'édition de mon PaymentController. Je suis nouveau sur symfnony
J'ai écrit cette requête dans mon référentiel de paiement (Bordereau)
fonction publique 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)') ->etOù('st.isDeleted = IN(:delete)') ->setParameter('supprimer', faux) ->setParameter('dateFin', $bordereau->dateFin) ->setParameter('dateDebut', $bordereau->dateDebut) ->getQuery() ->getResult() ; } ≪/pré>Il s'agit de la fonction d'édition du paiement (Bordereau) dans mon contrôleur
#[Route('/{id}/edit', nom : 'app_bordereau_edit', méthodes : ['GET', 'POST'])] public function edit(Request $request, Bordereau $bordereau, BordereauRepository $bordereauRepo) : Réponse { $formBordereau = $this->createForm(BordereauEditType::class, $bordereau); $formBordereau->handleRequest($request); if ($formBordereau->isSubowned() && $formBordereau->isValid()) { $bordereauRepo->save($bordereau, true); jj($bordereau); return $this->redirectToRoute('app_bordereau_index', [], Response::HTTP_SEE_OTHER); } return $this->renderForm('bordereau/edit.html.twig', [ 'bordereau' => $bordereau, 'formulaire' => $formBordereau, ]); } ≪/pré>J'espérais obtenir le résultat en vérifiant
dd($bordereauRepository);
mais j'obtiens ce résultat.J'ai recherché des problèmes similaires concernant "Trop peu de paramètres dans la requête", mais je n'ai pas réussi à trouver de solution.
Modifier
J'ai ajouté setParamaters pour dateDebut et dateFin. Mais je ne peux pas y accéder.
Dois-je créer un bordereau personnalisé ?
Modifier 2
Voici ma nouvelle fonction DQL
fonction publique findByDate(BordereauEditModel $bordereau, bool $isDeleted = false){ $query = $this->createQueryBuilder('bo'); $requête ->select('bo', 'bord_stag', 'st') ->leftJoin('bo.bordereauStagiaire', 'bord_stag') ->leftJoin('bord_stag.stagiaire', 'st') ->etOù('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')); } $requête ->getQuery() ->getResult() ; } ≪/pré>Il imprime les résultats en utilisant les paramètres statiques que j'ai définis. Mais pas pour les dynamiques.
J'ai également créé un modèle
BordereauEditModel
et un formulaire personnaliséVoici ma fonction
edit
#[Route('/{id}/edit', nom : 'app_bordereau_edit', méthodes : ['GET', 'POST'])] public function edit(Request $request, Bordereau $bordereau, BordereauRepository $bordereauRepository, BordereauEditModel $bordereauEdit) : Réponse { $bordereauEdit = new BordereauEditModel(); $formBordereau = $this->createForm(BordereauEditType::class, $bordereauEdit); $formBordereau->handleRequest($request); if ($formBordereau->isSubowned() && $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, 'formulaire' => $formBordereau, ]); } ≪/pré>Lorsque j'essaie de charger une dynamique, il est indiqué "Format de fonction membre () appelé sur null". Je ne sais pas si c'est une autre question et je devrais la supprimer d'ici (c'est-à-dire sous forme de paragraphe dans le message principal pour que les gens ne soient pas confus)
Appeler le format de fonction membre() sur null -> Résolu
Supprimez
IN
。如果要使用IN
de la condition à vérifier, vous ne pouvez pas utiliser d'opérateurs de comparaison.