2010-08-21 11 views
9

tienen tales consulta Zend:Zend-marco DB: O en lugar de operador AND

$select = $this->_table 
       ->select() 
       ->where('title LIKE ?', '%'.$searchWord.'%') 
       ->where('description LIKE ?', '%'.$searchWord.'%') 
       ->where('verified=1 AND activated=1'); 

En otras palabras, parece que:

SELECT `some_table`.* FROM `some_table` WHERE (title LIKE '%nice house%') AND (description LIKE '%nice house%') AND (verified=1 AND activated=1) 

Si tengo pareja y frases, Zend conectarlo a través Operador Y ¿Cómo puedo conectarlo con el operador OR? Porque necesito:

...(title LIKE '%nice house%') OR (description LIKE '%nice house%')... 

Su ayuda sería apreciada.

+0

Creo que solo sql .. se tendrá en cuenta la precedencia del operador, porque estas consultas se convertirán en sql simple. Solo sugiero que yo también tenga esta duda y vine aquí –

Respuesta

24
$this->_table->select()->orWhere($condition); 

Para construir más consultas complexe (i.g. sub-condiciones) puede que tenga que utilizar $this->table->getAdapter()->quoteInto() y escribir su seleccionar manualmente. (? Ya)

1

me han puesto en marcha la consulta Zend

$select = $this->_table 
       ->select() 
       ->where('title LIKE ?', '%'.$searchWord.'%') 
       ->ORwhere('description LIKE ?', '%'.$searchWord.'%') 
       ->where('verified=1 AND activated=1'); 
1

Las otras respuestas aquí no funcionan, la solución actual es llamar nido() y UNNEST() en la cláusula where:

$select->where 
    ->nest() 
     ->equalTo('column1', 1) 
     ->or 
     ->equalTo('column2', 2) 
    ->unnest() 
    ->and 
    ->equalTo('column3', 3); 
Cuestiones relacionadas