• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CakePHPでのコメント数表示について)

CakePHPでのコメント数表示について

このQ&Aのポイント
  • CakePHPを使って簡単な掲示板を開発している中で、トップページに各トピックについたコメント数を表示させる方法について困っています。
  • 掲示板とコメントのテーブル間にアソシエーションを貼り付けていますが、コントローラーで件数を取得するとコメントの数ではなく、掲示板の数を取得してしまいます。
  • また、テーブルの関連性から表示方法にも困っています。コメント数をトピックの横に表示させたいのですが、どのようなコードを書けば良いか分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

あれ? hasMany の場合 join 構文にならないようです。hasOneで連結指定してください。

takeruhoge
質問者

お礼

再度やり直したら無事できました(T T)/ 本当にありがとうございました。

takeruhoge
質問者

補足

色々試してみたのですが、やはりhasOneだと思う結果を出せないです。。

その他の回答 (1)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

必要なsql文は以下 (ただし、MySQL, SQLiteを想定、これ以外のgroup化されてないカラムがあるとエラーになるデータベースシステムの時は、max(p.title) as title, max(p.contents) as contents, のようにする。) select p.id, p.title, p.contents, count(c.post_id) as cnt from posts as p left join comments as c on p.id=c.post_id group by p.id order by p.id desc ; これと同等のSQL文を作成してくれるようにfindの$paramを調整、 1.posts に $hasManyか$hasOneで Comment を指定すると、上記のleft join 条件になる 2.group指定、field指定を以下のように $data = $this->Post->find('all' , array('order' => array('Post.id' => 'desc') , 'group'=>'Post.id' , 'fields'=> array('Post.id', 'Post.title','Post.contents', 'count(Comment.post_id) as countComment') )); → 結果 $data[lineNo][modelName][columnName] の3次元配列 count関数カラムは、 modelName = 0, columnName = aliasName

takeruhoge
質問者

補足

1054: Unknown column 'Comment.post_id' in 'field list' と出てしまうようです。 ん~もう少し調べてみます。

関連するQ&A