2010-02-26 28 views
12

Tengo problemas para crear una consulta bastante simple con Doctrine ...Doctrine: ¿Múltiple (whereIn O whereIn) consulta?

Tengo dos matrices ($ countries, $ cities) y necesito comprobar si los valores de registro de la base de datos coincidirían con cualquiera dentro. Busco algo como:

->whereIn('country', 'city', $countries, $cities) 

... con 'país' EN DONDE ser para los países $ y 'ciudad' de ser una ciudad donde $ IN para.

Podría separar las dos, pero la consulta necesaria tiene muchas otras condiciones, por lo que no es posible. El SQL resultante que estoy buscando sería:

SELECT ... 
WHERE ... 
AND ... 
AND ... 
AND ('country' IN (1,2,3) OR 'city' IN (7,8,9)) 
AND ... 
AND ...; 

Por lo tanto, podría pensarse que también es solo un problema de horquillado. Alguien sabe si esto es posible con Doctrine DQL? He revisado la documentación pero no puedo encontrar ninguna dirección.

Gracias

Respuesta

38

Después de una hora de experimentar en este sentido, aquí es la sintaxis para hacer que funcione.

$q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9))); 
4

¿Por qué no usar algo así como?

$countryIds=[1,2,3]; 
$cityIds=[7,8,9]; 

$q->whereIn('country',$countryIds)->andWhereIn('city',$cityIds); 

Además, encadenarlas para el contexto (la mayoría de los métodos de Doctrine devuelven $ this).

ver http://www.symfony-project.org/doctrine/1_2/en/06-Working-With-Data

+0

Atención, esto no es compatible con la doctrina 2! –

+0

Esto es relevante porque esta pregunta es 'doctrina' y no 'doctrina2' – TwystO

Cuestiones relacionadas