0
cakephp search pluginを使用しようとしていますが、クエリメソッドを使用して結果をフィルタリングする際に問題が発生しています。 $ filterArgs配列で宣言されている関数findByLength()を作成しました。私が構築している配列が正しいかどうかはわかりません。 SQL文を見ると、呼び出されていないように見えます。何か案は?ありがとう!Cakephp(CakeDC)検索プラグインのカスタムフィルタメソッド
<?php
// findByLength() is not affecting the sql like expected. Any ideas?
// using http://cakedc.com/downloads/view/cakephp_search_plugin
public $filterArgs = array(
array('name' => 'name', 'type' => 'like'),
array('name' => 'search', 'type' => 'like', 'field' => 'Trail.description'),
array('name' => 'type','type'=>'string'),
array('name'=>'dogs_allowed','type'=>'value'),
array('name'=>'area_id','type'=>'value'),
array('name' => 'length', 'type' => 'query', 'method' => 'findByLength', 'field' => 'Trail.length'),
array('name' => 'state_id','field'=>'Area.state_id', 'type' => 'value'),
array('name'=>'created_by_pt','field'=>'Trail.created_by','type'=> 'value'),
//array('name'=>'created_by_user','field'=>'Trail.created_by','type'=> 'value'),
);
public function findByLength(){
if(empty($data['Trail']['length'])){
return array();
}
switch($data['Trail']['length']){
case 0:
return array('AND'=> array($this->alias.'.length >='=> $data['Trail']['length'],
$this->alias.'.length <'=> $data['Trail']['length'] + 3)
);
break;
case 3:
return array('AND'=> array($this->alias.'.length >='=> $data['Trail']['length'],
$this->alias.'.length >'=> $data['Trail']['length'] + 3)
);
break;
case 6:
return array('AND'=> array($this->alias.'.length >='=> $data['Trail']['length'],
$this->alias.'.length <'=> $data['Trail']['length'] + 4)
);
break;
case 10:
return array('AND'=> array($this->alias.'.length >='=> $data['Trail']['length'])
);
break;
}
}
?>