2010-02-26 13 views
12

Ho problemi a creare una query abbastanza semplice con Doctrine ...Doctrine: query multiple (whereIn OR whereIn)?

Ho due array ($ paesi, $ città) e ho bisogno di verificare se i valori del record del database corrispondano a qualsiasi interno. Sto cercando qualcosa di simile:

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

... con 'paese' essere un WHERE in per $ paesi e 'città' essere un DOVE IN per $ city.

Potrei separare i due ma la query richiesta ha molte altre condizioni, quindi non è possibile. Il seguente SQL I sto dopo sarebbe:

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

Si potrebbe quindi pensare anche solo come un problema di bracketing. Qualcuno sa se questo è possibile con Doctrine DQL? Ho esaminato la documentazione ma non ho trovato alcuna direzione.

Grazie

risposta

38

Dopo un'ora di sperimentare su queste sciocchezze, ecco la sintassi per farlo funzionare.

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

Perché non usare qualcosa di simile?

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

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

Inoltre, unirli per il contesto (la maggior parte dei metodi Doctrine restituisce $ this).

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

+0

Attenzione, questo non è compatibile con Doctrine 2! –

+0

Questo è rilevante poiché questa domanda è contrassegnata da 'doctrine' e non' doctrine2' – TwystO

Problemi correlati