LoginSignup
6
5

More than 3 years have passed since last update.

初心者の僕が知らなかったCakePHP2の便利機能

Last updated at Posted at 2016-07-12

時間定義定数

地味だけど使うと便利。

$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パラメーターでのページネーションが完成。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5