2011-07-26 160 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而不是在它們之間。 –