CakePHPerのfind系コーディングレベル

CakePHPのパフォーマンスの"初歩的な"ボトルネックはモデルのアソシエーションがほとんど。
要はfind系の処理でrecursive = 2とかして、必要のないモデルデータを引っ張ってきてしまっていたりとか。
で、それを体験してアソシエーションに気を使うようになったりする。


CakePHPerのfind系コーディングのレベルなどを考えてみた。

レベル0

アソシエーションはbakeのときのまま。欲しいデータがついていないときはrecursiveを上げる。
SQLを書かずになんでもいい感じで取ってきてくれるCakePHPが好きになる。

レベル1

recursiveの調整をするようになる。ときにはfieldsのパラメータの調整もする。
recursive = 2を使うと負けた気になる。

レベル2

bindModel()/unbindModel()でアソシエーションを調整する。
初めからアソシエーションを書かないでbindModel()する派と、アソシエーションをunbindModel()する派に分かれる。

レベル3

Containable Behaviorに感動して嬉々として使おうとするが、設定の仕方に戸惑う。

レベル4

$this->Model->query()でCakePHPライクな返り値を取得する"AS"付SQLをソラで書ける。脳内CakePHP ORM。

自分は大体レベル1とレベル3の間らへん。bindModel()/unbindModel()すら面倒。