doctrinedqlquery-builder

Symfony2 Doctrine querybuilder where IN


I losted trilion hours google this but none of the solutions were good.

I have this querybuilder:

        $qb2=$this->createQueryBuilder('s')
        ->addSelect('u')
        ->innerJoin('s.user','u')
        ->where("u.id IN(:followeeIds)")
        ->andWhere('s.admin_status = false')
        ->setParameter('user', $user)
        ->setParameter('followeeIds', $arrayFolloweeIds)
        ->orderBy('s.id','DESC')
        ->setMaxResults(15)
    ;

I could do a second query and then do like $qb->getDQL() but have would i cache the query ?

Error:

Invalid parameter number: number of bound variables does not match number of tokens

Solution

  • You are setting the user parameter but I do not see it being used in the query anywhere?

    Also I had issues with WHERE IN and Doctrine QueryBuilder with arrays would give me a similar error, and oddly enough running array_values before binding the parameter seemed to solve those issues as well.

    Try:

    $qb2=$this->createQueryBuilder('s')
            ->addSelect('u')
            ->innerJoin('s.user','u')
            ->where("u.id IN(:followeeIds)")
            ->andWhere('s.admin_status = false')
            ->setParameter('followeeIds', array_values($arrayFolloweeIds))
            ->orderBy('s.id','DESC')
            ->setMaxResults(15)
        ;