Je viens de construire mon objet qui affiche mes articles en page d'accueil via un foreach :
Code : Tout sélectionner
public function HomeWorks(){
$limited = $this->Limited();
return $this->Cnx()->Prepare("
SELECT works.id,
works.name,
works.writer,
works.content,
works.posted,
works.date,
works.slug,
users.email,
users.username,
users.avatar,
comments.post_id,
COUNT(comments.post_id) AS nbcoms,
images.name AS imgname
FROM works
LEFT JOIN users ON users.username = works.writer
LEFT JOIN comments ON comments.post_id = works.id
LEFT JOIN images ON images.id = works.image_id
WHERE works.posted = ?
GROUP BY works.id
ORDER BY works.date ASC LIMIT $limited
",[1]);
}
Alors je fais comme ceci :
Code : Tout sélectionner
SELECT works.id,
works.name,
works.writer,
works.content,
works.posted,
works.date,
works.slug,
users.email,
users.username,
users.avatar,
COUNT(comments.post_id) AS nbcoms,
images.name AS imgname,
COUNT(likes.id_article) AS orderlike,
COUNT(dislikes.id_article) AS orderdislike
FROM works
LEFT JOIN users ON users.username = works.writer
LEFT JOIN comments ON comments.post_id = works.id
LEFT JOIN images ON images.id = works.image_id
LEFT JOIN likes ON likes.id_article = works.id
LEFT JOIN dislikes ON dislikes.id_article = works.id
WHERE works.posted = ?
GROUP BY works.id
ORDER BY orderlike ASC, orderdislike DESC LIMIT $limited
Sauf qu'il ne me retourne pas un nombre logique
j'ai deux likes sur l'article 1 et il me compte 4 etc...
je ne comprend pas ? ça fonctionne pour les commentaires j'ai bien le retour total par articles quand je fais un order by dessus les articles qui en on le plus sont bien en premier.
J'ai fais une erreur ? je ne vois vraiment pas.
Une aide serai la bienvenue Merci