CakePHP

CakePHPで新たに知ったこと

2013/06/06

Javaの勉強をやってたはずが、なぜか1年以上前に納品した案件の追加がやって来まして、久々にCakePHPで開発。
その中で、今回はじめて知ったことが二つ。今後また同じことでハマらないようにとの自戒の意味も兼ねてエントリー。

現在実行中ののコントローラーから、別モデルのデータをPaginateする場合の文法。

その1

いつもは同モデルのコントローラーからページング付きのデータをfindするのですが、今回は特殊な例(?)として、別モデルのデータがページング、かつorder(並び順)付きで必要になりました。
いつものようにfind文を書くのですが、なぜか走らない。
なんでやねんと調べてみると、別モデルデータをPaginate、orderつきで取得する場合は、文法が違うらしい。

通常は別モデルの場合でも、以下の例文で問題なくデータは取得できます。

しかしながら、これにorder、さらにlimit等をを追加してデータを取得したい場合、こう書く必要があります。

先にpaginateに対し、limitとorderを渡してから、モデルを呼ぶ。
割とハマってしまいましたが、google先生ありがとうございました。

テーブル名「person」は使えない。personの複数形は「people」だ!

その2

CakePHPの命名規則として、テーブル名は複数形を使用するのですが、テーブル名を「persons」とつけて作成したところ、なぜかMissing Database Table エラーが。
しかもエラー内容を見ると、people テーブルを探しに行っている。そんなテーブル作ってないから当たり前だっての。
app_controllerとかのUsesに間違ってpeopleって書いたか?もしくは予約語?とか思って調べたのですが、全然該当せず。
おかしいと思っていましたら、なんと『personの複数形はpeopleだぜ』ってことが、cakephp/cake/libs/inflector.php に書いてありました。
すげーぜCake。普通に感心してしまったよ。
でもって、自分の英語の語彙力の無さに愕然としたよ(苦笑

以上、久々にCakePHPを触ってみた2011年のGWでした。

[tgAmazonItemLookup asin="4774153249" related="1"]

-CakePHP
-,