2010年3月15日月曜日

CakePHPで生SQL

ナマ言ってんじゃないよ、と

実はCakePHPのModel->queryでも「?」の置き換えができたりと、意外と便利。でもPDOを使ってる身からすると:keyword形式の方がやりやすい。あとエスケープの仕方はSanitize->escapeでいいのかな?? なんかその辺の情報の薄さが微妙...。調べるよりもやり方知ってるから自力でエスケープしたくなりますね><

個人的には AS Model__fieldはよく使います。その方がテーブルから取得したデータの配列構造がCakePHPらしさを失わずに済むので。

JOINしたくなったよ〜

CakePHPのModelは便利君だけど、ある期間の集計とか、前年比とかになると、たぶん直接SQLを書いた方が早い。実行速度も全然その方が気がする。でもどうなんだろ、CakePHPマスターからすれば、そんなのちゃんとアソシエーション組んどけばできるよ!って言うのかもしれない。LEFT JOIN table_a as prevous_year ON table_a.year = (table_a.year - 1)みたいなのって、アソシエーションの指定でいけなくもなさそうだなぁとは思います。でもSUM(CASE WHEN table_a.day <= 10 THEN table_a.price ELSE 0 END) AS price_10 みたいなのを書き出すと、ちょっとソースが汚くなりそうだから、いっそのこと$this->queryっちゃいたくなるんですよね。

0 件のコメント: