ブログ投稿のリストを持つページに各ブログ投稿のコメント数(カテゴリ、日付、著者など)を表示します。どのようにpropelに次のmysqlクエリを書くのですか?Propelを使用したSqlクエリ(inner join + count + group by)
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_idとのコメントのテーブルです。私は結果セットの列として 'numofcomments'を取得することはできません。
$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」にアクセスできます。現在、私は(私の最後の手段となります)非ORMのアプローチを使用していますか?
EDIT:私が知りたかったのは、Propelで上記のクエリを書く方法です。私が今できることは、コメントテーブルの内部結合を持つポストテーブルを取得し、各ポストIDのコメントテーブルにdoCountを実行することです。この結果、Postテーブルに対しては1つのクエリが、コメントテーブルには多くのクエリが実行されます。 SQLクエリを最小限に抑えたい。その上 感謝:)
おかげ@nos ...それはグループバイクエリーを正しく書いていないという私の役割についての基本的な見落としでしたが、質問は異なっています。私はそれを編集しました...もう一度確認できますか? :) – fenderplayer