如何在cakephp中连接条件数组

raj*_*esh 3 cakephp

在条件的基础上获得DB结果

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);
Run Code Online (Sandbox Code Playgroud)

这该怎么做?如何连接两个条件?

Rob*_*son 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'];
Run Code Online (Sandbox Code Playgroud)


big*_*801 5

我会做像Rob Wilkerson建议的那样但是像这样:

$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'];
Run Code Online (Sandbox Code Playgroud)