私はCakePHP検索プラグインを使用しています。私は、ユーザが値(例えば、24のような)を入力し、結果としてテーブルの年齢フィールドの値を持つすべての要素を得ることができる検索フィールド(年齢と呼ぶ)を持っていたいと思います24歳以上の方。どうやってやるの?CakePHP検索プラグイン、検索で指定された値以上の値を検索
これまでのところ、私は(あなたが24歳正確をしたい場合は、それが正常に動作します)などの名前または正確な値で、通常検索を行うことができます。
ここで私がこれまで持っている検索プラグインに関連するコードです:
- モデル:
class Person extends AppModel{
var $name = 'Person';
public $actsAs = array('Searchable');
public $filterArgs = array(
array('name' => 'name', 'type' => 'like'),
array('name' => 'age', 'type' => 'value'),
);
}
- コントローラ:
class PersonsController extends AppController {
var $name = 'Persons';
var $components = array('Search.Prg');
public $presetVars = array(
array('field' => 'name', 'type' => 'value'),
array('field' => 'age', 'type' => 'value'),
);
function index() {
$this->set('persons', $this->Person->find('all'));
}
/* ---------------- SEARCH PLUGIN --------------*/
public function find() {
$this->Prg->commonProcess();
$this->paginate['conditions'] = this->Game->parseCriteria($this->passedArgs);
$this->set('persons', $this->paginate());
}
}
- 見つけるには。 ctp:
//apart from the code below, I have all the code to show the results
echo $form->create('Game', array(
'url' => array_merge(array('action' => 'find'), $this->params['pass'])
));
echo $form->input('name', array('div' => false));
echo $form->input('age', array('div' => false));
echo $form->submit(__('Search', true), array('div' => false));
echo $form->end();
まとめると:上記のコードでを、私は年齢フィールドの正確な値の検索をperfomrすることができます。 '年齢> = の値を入力して'を検索するにはどうすればよいですか?
あらかじめご了承ください!
array('field' => 'age', 'type' => 'value'),
- - あなたのpresetVarsから
O_o YW :)今、私を間違えないでください。私は、次の開発者ほど気の利いた小さな抽象を愛しています。たぶん私は何かが欠けているでしょう。なぜケーキの魔法を使うのではなかったの? findByWhatever( 'field')を明示的に定義する必要はありません。単に呼び出します。 CakeのModelクラスは、findByWhateverをロールバックしたときに動的メソッドをロールバックし、 '何でも'を取り、フィールドのModel内を探し、最初を返します。 (Betchaでは、findAllByWhateverについて何が違うのか推測できません...^_ ^)findBy()/ findAllBy()は、equal-or-greater-than比較をサポートしていませんか? – OpenSorceress