Como usar conditions do cakephp para and or e in

Posted on by : admin Tags: ,

Como usar conditions do cakephp para “AND”,  “OR” e “IN”

No conditions do cakephp você pode usar o “AND” da seguinte maneira:
$rows = $this->MODEL->find(‘all’, array( ‘conditions’ => array(‘columnA = 1’, ‘columnB = 2’)));

Esta busca acima seria:
SQL: select * from MODEL where columnA = 1 and columnB = 2 ;

 

No conditions do cakephp você pode usar o “OR” da seguinte maneira:
$rows = $this->MODEL->find(‘all’, array( ‘conditions’ => array(‘columnA = 1’,
array(‘OR’ => array(“columnB = 2”, “columnB =3”))));

Esta busca acima seria:
SQL: select * from MODEL where columnA = 1 and ((columnB = 2) or (columnB = 3) ) ;

 

Detalhe importante, caso o “OR” tenha colunas idênticas, é necessário  sem ser por atribuição, veja os exemplos:
Exemplo colunas idênticas:  array(‘OR’ => array(“columnB = 2”, “columnB =3”))
Exemplo colunas diferentes:  array(‘OR’ => array(“columnB” => 2, “columnB” => 3))

Agora caso queira fazer um IN, você pode usar o próprio OR ou colocar diretamente o in:
Exemplo IN com OR:  array(‘OR’ => array(“columnB” =>array(2,3)))
Exemplo IN sem OR:  array(“columnB in (2,3)”) este é aplicado igual ao and.