ブログ投稿のリストがあるページに、各ブログ投稿のコメント数(カテゴリ、日付、作成者など)を表示したいと思います。次のmysqlクエリをpropelで作成するにはどうすればよいですか?
SELECT post.id, post.title, post.more_columns , COUNT(comments.post_id) AS numofcomments FROM post INNER JOIN comments ON post.id = comments.post_id GROUP BY post.id, post.title, post.more_columns
ここで、postはブログテーブルとコメントであり、post.idへの外部キーとしてpost_idを持つコメントのテーブルです。結果セットの列として「numofcomments」を取得できないようです。現在、私は非ORMアプローチを使用しています(これが私の最後の手段になります):
$con = Propel::getConnection(PostPeer::DATABASE_NAME);
$sql = "SELECT post.* , COUNT(comments.post_id) AS numcomments FROM post INNER JOIN comments ON post.id = comments.post_id GROUP BY post.id";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = PostPeer::populateObjects($stmt);
return $result;
結果のPropel結果セットの「numofcomments」にアクセスするにはどうすればよいですか?
編集:私が知りたかったのは、Propelで上記のクエリをどのように書くことができるかです?私が今できることは、コメントテーブルの内部結合を使用して投稿テーブルを取得し、各投稿IDのコメントテーブルでdoCountを実行することです。これにより、Postテーブルに対して1つのクエリが発生し、commentsテーブルに対して多くのクエリが発生します。SQLクエリを最小限に抑えたいと思います。ありがとう :)