множественный фильтр в Symfony 3.4 - PullRequest
0 голосов
/ 28 февраля 2019

Я работаю над формой фильтра в symfony 3.4, я фильтрую пользователей по дате, способу оплаты, зоне доставки и nbCommandes, но мой запрос не работает в репозитории, мой вопрос, как добавить несуществующие nbCommandsв базе данных в моем запросе?вот моя форма: рендеринг моей формы:

enter image description here

и ошибка:

enter image description here

спасибо за вашу помощь

     class FilterClientsType extends AbstractType
     {
      public function buildForm(FormBuilderInterface $builder, array 
      $options)
       {
        $builder
        ->add('dateDebut', DateType::class, array(
            'label'=>false,
            'widget' => 'single_text',
            'html5' => true,

        ))
        ->add('dateFin', DateType::class, array(
            'label'=>false,
            'widget' => 'single_text',
            'html5' => true,


        ))

        ->add('Filter', SubmitType::class, array(
            'attr' => array(
                'class' => 'btn btn-primary',
            )
        ));
}/**
  * {@inheritdoc}
  */
   public function configureOptions(OptionsResolver $resolver)
    {
    $resolver->setDefaults(array(
        'data_class' => null
    ));
   }

 }

Контроллер:

  public function listAction(Request $request)
  {
    $form = $this->createForm(FilterType::class);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
        $dateDebut = $form->get('dateDebut')->getData();
        $dateFin = $form->get('dateFin')->getData();
        $modePaiement = $form->get('modePaiement')->getData();
        $nbCommande = $form->get('nbCommande')->getData();
        $zoneLivraison = $form->get('zoneLivraison')->getData();
    } else {
        $dateDebut = null;
        $dateFin = null;
        $modePaiement=null;
        $nbCommande=null;
        $zoneLivraison=null;
    }

    $userRepos = $this
        ->getDoctrine()
        ->getManager()
        ->getRepository('CeUtilisateurBundle:User');
        $listUsers = $userRepos->filterUser($dateDebut, $dateFin, $modePaiement, $nbCommande, $zoneLivraison);

         return $this->render('CeUtilisateurBundle:Utilisateur:list.html.twig', array(
        'form' => $form->createView(),
        'listUsers' => $listUsers,
    ));
}

Хранилище:

 class UserRepository extends\Doctrine\ORM\EntityRepository
             {
             public function filterUser($dateDebut, $dateFin, 
             $modePaiement, $nom, $nbCommandes)
              {
             $qb = $this
             ->createQueryBuilder('u')
             ->leftJoin('u.commandes', 'cmd')
            ->leftJoin('u.zoneLivraison', 'zone')
            ->addSelect('cmd')
           ->addSelect('zone')
        - >addSelect('COUNT(u.id) as nbCommandes')
         ->groupBy('cmd.id');

        if (!is_null($dateDebut) && !is_null($dateFin) && $dateFin >= 
      $dateDebut && !is_null($modePaiement) && !is_null($nom) && 
       !is_null($nbCommandes)) {
        $qb->where('cmd.dateCommande BETWEEN :dateDebut AND :dateFin')
       ->andWhere ('cmd.modePaiement = :modePaiement')
       ->andWhere ('zone.nom = :nom')
        ->setParameter('dateDebut', $dateDebut)
        ->setParameter('dateFin', $dateFin)
        ->setParameter('modePaiement', $modePaiement)
        ->setParameter('nom', $nom)
        ->setParameter('nbCommandes', $nbCommandes);
    }
        return $qb
            ->getQuery()
            ->getResult();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...