Je souhaite afficher le nombre de commentaires pour chaque article de blog (avec la catégorie, la date, l'auteur, etc.) sur une page contenant une liste d'articles. Comment écrire la requête mysql suivante dans propel?Requête Sql (jointure interne + compte + grouper par) en utilisant 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
où poste est une table de blog et les commentaires, une table des commentaires avec post_id comme une clé étrangère à post.id. Je ne peux pas sembler obtenir «numofcomments» comme une colonne dans le jeu de résultats. Actuellement, je suis en utilisant une approche non-ORM (qui sera mon dernier recours):
$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;
Comment puis-je accéder à « numofcomments » dans le Propel résultant ResultSet?
EDIT: Ce que je voulais savoir, c'est comment je peux écrire la requête ci-dessus dans Propel? Ce que je peux faire maintenant, c'est obtenir la table des messages avec la jointure interne sur la table des commentaires, puis exécuter doCount sur la table des commentaires pour chaque post-id. Cela entraîne 1 requête pour la table Post et de nombreuses requêtes pour la table des commentaires. Je souhaite réduire les requêtes sql au minimum. Merci :)
Merci @nos ...c'était un oubli fondamental de ma part de ne pas écrire correctement la requête groupée, mais la question est différente. Je l'ai édité ... pouvez-vous vérifier à nouveau? :) – fenderplayer