Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 
like image 456
Lukas Lukac Avatar asked Apr 27 '13 17:04

Lukas Lukac


People also ask

What is Doctrine in Symfony?

Symfony provides all the tools you need to use databases in your applications thanks to Doctrine, the best set of PHP libraries to work with databases. These tools support relational databases like MySQL and PostgreSQL and also NoSQL databases like MongoDB.

What is doctrine repository?

A repository in a term used by many ORMs (Object Relational Mappers), doctrine is just one of these. It means the place where our data can be accessed from, a repository of data. This is to distinguish it from a database as a repository does not care how its data is stored.

How does query builder work?

Query Builder is designed to enhance productivity and simplify SQL query building tasks. Query Builder provides a graphical user interface for creating SQL queries. You can drag-and-drop multiple tables, views and their columns onto a visual designer to generate SQL statements.


1 Answers

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)     ; 
like image 128
Ghassan Idriss Avatar answered Oct 05 '22 23:10

Ghassan Idriss