Я хочу показать количество комментариев для каждого сообщения в блоге (вместе с категорией, датой, автором и т. Д.) На странице, содержащей список сообщений в блоге. Как мне написать следующий запрос 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;
Как я могу получить доступ к 'numofcomments' в результирующем наборе результатов Propel?
РЕДАКТИРОВАТЬ: Что я хотел знать, как я могу написать вышеупомянутый запрос в Propel? Теперь я могу получить таблицу сообщений с внутренним соединением таблицы комментариев, а затем запустить doCount таблицы комментариев для каждого идентификатора записи. Это приводит к 1 запросу для таблицы сообщений и множеству запросов для таблицы комментариев. Я хочу сократить запросы SQL к минимуму.
Спасибо:)