[QueryBuilder] Modify query based on variable value #5482

Closed
opened 2026-01-22 15:08:51 +01:00 by admin · 1 comment
Owner

Originally created by @michal-lewandowski on GitHub (Mar 27, 2017).

Originally assigned to: @Ocramius on GitHub.

Hi, I'm using Symfony3 and I've prepared following query:

       $productsRepository = $this->getDoctrine()->getRepository('DEERCMSProductBundle:Product');

        $query = $productsRepository->createQueryBuilder('p')
            ->leftJoin('p.brand', 'b')
            ->leftJoin('p.model', 'm')
            ->where('b = :brand')
            ->andWhere('m = :model')
            ->setParameter('brand', $selectedBrand)
            ->setParameter('model', $selectedModel)
            ->getQuery();
        
        $products = $query->getResult();

What should I do if I want to add if statement (if $year is not null, I want to add one more andWhere() method) while building query. I've tried this code:

    $query = $productsRepository->createQueryBuilder('p')
            ->leftJoin('p.brand', 'b')
            ->leftJoin('p.model', 'm')
            ->where('b = :brand')
            ->andWhere('m = :model');
            if(!is_null($year))
            {
                $query
                    ->andWhere('p.year = :year')
                    ->setParameter('year', $year);
            }
        $query
            ->setParameter('brand', $selectedBrand)
            ->setParameter('model', $selectedModel)
            ->getQuery();

        $products = $query->getResult();

And it didn't worked for me, I've got:

Attempted to call an undefined method named "getResult" of class "Doctrine\ORM\QueryBuilder".

Regards :D

Originally created by @michal-lewandowski on GitHub (Mar 27, 2017). Originally assigned to: @Ocramius on GitHub. Hi, I'm using Symfony3 and I've prepared following query: ``` $productsRepository = $this->getDoctrine()->getRepository('DEERCMSProductBundle:Product'); $query = $productsRepository->createQueryBuilder('p') ->leftJoin('p.brand', 'b') ->leftJoin('p.model', 'm') ->where('b = :brand') ->andWhere('m = :model') ->setParameter('brand', $selectedBrand) ->setParameter('model', $selectedModel) ->getQuery(); $products = $query->getResult(); ``` What should I do if I want to add if statement (if $year is not null, I want to add one more andWhere() method) while building query. I've tried this code: ``` $query = $productsRepository->createQueryBuilder('p') ->leftJoin('p.brand', 'b') ->leftJoin('p.model', 'm') ->where('b = :brand') ->andWhere('m = :model'); if(!is_null($year)) { $query ->andWhere('p.year = :year') ->setParameter('year', $year); } $query ->setParameter('brand', $selectedBrand) ->setParameter('model', $selectedModel) ->getQuery(); $products = $query->getResult(); ``` And it didn't worked for me, I've got: > Attempted to call an undefined method named "getResult" of class "Doctrine\ORM\QueryBuilder". Regards :D
admin added the BugInvalid labels 2026-01-22 15:08:51 +01:00
admin closed this issue 2026-01-22 15:08:52 +01:00
Author
Owner

@michal-lewandowski commented on GitHub (Mar 27, 2017):

I found a soluting. I had to move getQuery() to $products


        $query
            ->setParameter('brand', $selectedBrand)
            ->setParameter('model', $selectedModel);


        $products = $query->getQuery()->getResult();
@michal-lewandowski commented on GitHub (Mar 27, 2017): I found a soluting. I had to move getQuery() to $products ``` $query ->setParameter('brand', $selectedBrand) ->setParameter('model', $selectedModel); $products = $query->getQuery()->getResult(); ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#5482