2011-07-26 161 views
0

我使用CakePHP的搜索插件http://cakedc.com/downloads/view/cakephp_search_plugin,并希望进行对Arg的搜索多个领域我有阵列的filterExpr如下在许多领域

var $filterArgs = array(
     array('name' => 'search', 'type' => 'like', 'field' => 'Interview.title_en'), 
    ); 

我希望搜索ARG搜索不CakePHP的搜索插件搜索只有字段Interview.title_en,但也搜索另一个领域,我试过类似

var $filterArgs = array(
     array('name' => 'search', 'type' => 'like', 'field' => array('Interview.title_en', 'Interview.Desc')); 

但它不工作!

有什么建议吗?

+0

我管理通过在URL /访问/标题发送2个PARAMS来解决它:{searchedvalue} /递减:{searchedvalue} 和在控制器 $这 - >分页[ '条件' ] = array( “或”=> $ this-> Post-> parseCriteria($ this-> passedArgs) ); 它运作良好 –

回答

4

为了达到这个目的,你必须在你的模型中创建一个简单的方法来建立搜索字段的'OR'条件。

public $filterArgs = array(
    array('name' => 'q', 'type' => 'query', 'method' => 'filterQuery'), 
); 

public function filterQuery($data = array()) { 
    if(empty($data['q'])) { // q is the name of my search field 
     return array(); 
    } 

    $query = '%'.$data['q'].'%'; 
    return array(
     'OR' => array(
      'Model.title LIKE' => $query, 
      'Model.description LIKE' => $query, 
      'Model.resources LIKE' => $query, 
     ) 
    ); 
} 
+0

我设法通过在URL /采访/标题发送2个PARAMS解决这个问题:{} searchedvalue /递减:{} searchedvalue 和控制器 $这个 - >分页[ '条件' ] = array( “或”=> $ this-> Post-> parseCriteria($ this-> passedArgs) ); 它运行良好,不添加其他方法 –

+0

@ahmed我会说这是一个愚蠢的做法。 – Dunhamzzz

+0

我想说这不复杂,没有任何其他额外的方法运作良好。额外的方法将是更复杂的查询的完美方式,但我只是想在条件之间添加OR而不是在它们之间。 –