2008年02月17日
CakePHP php4でのクエリー系のあれこれ。
cakephp on php4で、ちょこっと嵌ったので紹介。
findBy{フィールド}メソッドは結構便利なので、
使っていたのですが、思わぬ落とし穴。
PHP5とPHP4で書き方が違う罠。
たとえば、
とかしたときに、
php5だと、「user_id」のフィールドを検索してくれるのですが、
php4だと、「userid」のフィールドを検索しちゃうのですね。
なので、両方対応ってこととなると、findByメソッドはあまり使わないほうが
いいかなと思うわけです。
(DboSourceを書き換えてPHP4も同様に動かすとかできそうですが。。)
参考: [cakephp]findByで複数条件の指定 | blog.hereticsintheworld
http://blog.hereticsintheworld.com/program/38.html
#AND,OR検索できるとはしらなかった。。
と、もうひとつ。
CakePHP findAll で INNER JOIN する方法 | Sun Limited Mt.
http://www.syuhari.jp/blog/archives/83
beforeFindにjoinさせるテーブルを書き込めばいいんですが、
上の記事の通りにやると、php4ではJOINしてくれません。
なんでかっていうと、$queryDataが戻ってくれないんですね。
というわけで、beforeFindのreturn文を、
で、$queryDataを戻すようにするです。
findBy{フィールド}メソッドは結構便利なので、
使っていたのですが、思わぬ落とし穴。
PHP5とPHP4で書き方が違う罠。
たとえば、
$somemodel->findByUserID($user_id)
とかしたときに、
php5だと、「user_id」のフィールドを検索してくれるのですが、
php4だと、「userid」のフィールドを検索しちゃうのですね。
なので、両方対応ってこととなると、findByメソッドはあまり使わないほうが
いいかなと思うわけです。
(DboSourceを書き換えてPHP4も同様に動かすとかできそうですが。。)
参考: [cakephp]findByで複数条件の指定 | blog.hereticsintheworld
http://blog.hereticsintheworld.com/program/38.html
#AND,OR検索できるとはしらなかった。。
と、もうひとつ。
CakePHP findAll で INNER JOIN する方法 | Sun Limited Mt.
http://www.syuhari.jp/blog/archives/83
beforeFindにjoinさせるテーブルを書き込めばいいんですが、
上の記事の通りにやると、php4ではJOINしてくれません。
なんでかっていうと、$queryDataが戻ってくれないんですね。
というわけで、beforeFindのreturn文を、
return $queryData
で、$queryDataを戻すようにするです。
Posted by noji at 16:00 | Comments(0) | アレ系
この記事へのトラックバック
CakePHP php4でのクエリー系のあれこれ。:壁|?`) というわけで、beforeFindのreturn文を、 return $queryData で、$queryDataを戻すようにするです。 ずっとこの対処法をさがしてた。 まだcore追いかける...
[CakePHP][php4][findAll]CakePHP php4 FindAllでInnerJoinする方法【omegalphaの日記】at 2008年03月19日 17:24
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。