2010-07-29 74 views
2

条件数组要获得DB结果的条件如何连接CakePHP中

if($keyword!='') 
    build condition; 
    /* 
    array('conditions' => array("AND" => array ("esl.esl_artistname LIKE"=>"%".$artistname."%", 
    "esl.esl_songname LIKE"=>"%".$songname."%")), 
    'limit' => $arrFind['limit'], 
    'page'=>$arrFind['page'])); 
    */ 


if(!name!='') 
    /* 
    array('conditions' => array("esl.esl_artistname LIKE"=>"%".$artistname."%"), 
    'limit' => $arrFind['limit'], 
    'page'=>$arrFind['page'])) 
    */ 

$this->find('all',condition); 

基础上如何做到这一点?如何连接两个条件?

回答

5

为什么不初始化conditions数组,然后追加到它呢?

$conditions = array(); 
if(keyword != '') { 
    array_push(
    'conditions' 
    , array("AND" => array ("esl.esl_artistname LIKE"=>"%".$artistname."%", "esl.esl_songname LIKE"=>"%".$songname."%")) 
} 

if(!name != '') { 
    array_push('conditions', array("esl.esl_artistname LIKE"=>"%".$artistname."%") 
} 

$this->find('all', array('conditions' => $conditions, 'limit' => $arrFind['limit'], 'page' => $arrFind['page']; 
1

串联条件可在下列方式进行:

$condition1 = array('Model1.field1 LIKE'=>'%'.$value.'%', 'Model1.field2'=>2); 
$condition2 = array('Model2.field2 LIKE'=>'%'.$value.'%', 'Model2.field2'=>1); 

$this->MyModel->find('all', array('conditions'=>am($condition1, $condition2))); 

上午是蛋糕的快捷方式array_merge。

4

我会做类似罗布·威尔克森建议,但这样的:

$conditions = array(); 
if(keyword != '') { 
    $conditions[] = array("AND" => array ("esl.esl_artistname LIKE"=>"%".$artistname."%", "esl.esl_songname LIKE"=>"%".$songname."%")); 
} 

if(!name != '') { 
    $conditions[] = array("esl.esl_artistname LIKE"=>"%".$artistname."%"); 
} 

$this->find('all', array('conditions' => $conditions, 'limit' => $arrFind['limit'], 'page' => $arrFind['page'];