タグ

2010年5月21日のブックマーク (2件)

  • 北青山通信 from aoyama» CakePHPでhasManyのモデルに対して条件式を書く

    akePHPを含めたPHP,MySQLなどのWeb開発。その他、趣味の写真、アマチュア無線、読書の話題にしたブログです。 ただ今、CakePHPでWebサイトを開発しています。今回は、検索条件を設定して抽出して結果をリストにするという、定型的な検索サイトです。 あるモデルに対して検索条件を与えるのは普通です。CakePHPの場合、belongsToのような外部参照の関係であるモデルにも検索条件を与えても、簡単に抽出してくれます。 しかし、hasManyの関係にあるモデルの項目に検索条件を書いてあげるとSQLを発行しているところでエラーになります。SQLのデバックログによると、hasManyのモデルに対しては、SQLでleft joinを作ってくれません。これで、未定義のテーブルということでSQLエラーになります。 Googleで検索してみると、このように書けばOKと書いている。しかし、これ

  • CakePHP group byとinner joinでhasManyデータの件数を検索する – MT Systems

    例えばusersテーブルとpostsテーブルがあり、「users hasMany posts」としたとき、ユーザの投稿したメッセージ件数の一覧表など作りたいことなど、普通にあると思う。そんなとき、usersテーブルとposts テーブルをJOINして、同じuser_idを持つpostsデータをGROUP BYでまとめて、count()で件数を引っ張り出す。SQLで書くと以下のような感じ。 SELECT User.id,User.name,count(Post.user_id) AS num FROM users AS User LEFT JOIN posts AS Post ON User.id=Post.user_id GROUP BY User.id; ここで、投稿を1度もしていないユーザを省略したい場合は、「LEFT JOIN」を「INNER JOIN」に変更すればよい。 さて、この