時間定義定数
地味だけど使うと便利。
$seconds = 3 * DAY;
配列をconditionsにぶっ込めばIN句になる
ORでつなげる必要はない。
$ids = array(1, 3, 6);
$posts = $this->Post->find('all', array(
'conditions' => array('Post.id' => $ids)
));
毎回複雑なconditionsを書くならカスタムfindを使う
「表示ステータスがオンで、在庫が0より大きく、現時点で発売日を過ぎている商品」を取得したいなど、明らかに数カ所で使い回すであろうfindの条件があったらカスタムfindで定義しておくとDRYで良い感じになる。
Paginatorでも使えるし、CakePHP2.8からはマジックメソッドにも対応して、既存のfindメソッドと比べても遜色なく使える感じ。
配列で死ぬ前にHashクラスに頼る
ややこしい配列を操作したいならHashクラス。
ぶっちゃけドキュメントを読んでも便利さがわかりにくいからいくつかサンプルコードを読んでみるのがおすすめ。
CakePHPのarray地獄をHashクラスで生きのこる
http://blog.howtelevision.co.jp/entry/2014/07/04/160309
【cakePHP】配列を組み替える便利なHashクラス
http://www.mikame.net/pr/archives/834
Containableビヘイビアを使うならAppModelでrecursive = -1っておく
関連データが増えてくると予期せぬアソシエーション先のデータをやたらと自動で引っ張ってくるのでデフォルトは-1で運用しておいた方が安心。
Paginatorのコロン区切りをやめるぞ
namedパラメーターのページネーションはどうしても好きになれない、そんなときはparamTypeにquerystringを指定してあげる。
見慣れたGETパラメーターでのページネーションが完成。