CakePHPでS2JDBC風検索

私は、PHP案件はEclipsePDTで開発しているのだけども、
Modelやテンプレートファイルのコードアシストが効かないため、
最初苦労した。 というか、数日触ってないとAPIなんぞは忘れるので
どうにかコードアシストが効かないもんかと思っていた。

Eclipse PDTでCakePHP開発、まず設定すべきこと
そしたら、偶然にもこんなブログを発見。これはいい。


で、コードアシストが効くなら、流れるインターフェイスいいよなあ・・・
S2JDBCみたいな。 最近使ってめちゃ便利だって気づいたしなぁ・・・


ということで、さくっと作ってみました。
http://pluswing.net/main/software/s2model


こんな感じで使える

// CakePHP通常の検索
$data = $this->Model->findAll("Model.name like '%plus%' and Model.age <= 20", null, "Model.age desc, Model.created desc", 5);

//S2Modelを使用した検索
$data = $this->Model->select()->contains("name", "plus")->le("age", 20)->order("age desc", "created desc")->limit(5)->getResultList();


//プレースホルダーを使用した検索も可能
$data = $this->Model->select()->where("Model.name like ? and Model.age <= ?", "%plus%", 20)->order("age desc", "created desc")->limit(5)->getResultList();

まだバリバリ使ってはいないので、動きが変なところがあるかも。


追記:
思いついたというか、そういう風に作ったんだけど、
この拡張、直接モデルを拡張せずとも使える。
select.phpをvendorsフォルダにつっこみ、config/bootstrap.php
vendor("select");と書いてファイルを使えるようにしとく(CakePHP1.1系)
1.2系なら、App::import("Vendor", "select", array('file' => 'select.php'));
そんで、こうやる。

$m = new Select($this->Model);
$m->where("Model・・・