| @@ 46-59 (lines=14) @@ | ||
| 43 | ->getSingleResult(); |
|
| 44 | } |
|
| 45 | ||
| 46 | public function getArticleWithCountComment($slug) |
|
| 47 | { |
|
| 48 | return $this->createQueryBuilder('a') |
|
| 49 | ->select('a, c, t, u, count(cm.id) as countComments') |
|
| 50 | ->leftJoin('a.categories', 'c') |
|
| 51 | ->leftJoin('a.tags', 't') |
|
| 52 | ->leftJoin('a.comments', 'cm') |
|
| 53 | ->join('a.user', 'u') |
|
| 54 | ->where('a.slug = ?1') |
|
| 55 | ->groupBy('a, c, t, u') |
|
| 56 | ->setParameter(1, $slug) |
|
| 57 | ->getQuery() |
|
| 58 | ->getSingleResult(); |
|
| 59 | } |
|
| 60 | ||
| 61 | public function getArticlesSorted($sortBy, $param, $page = 1, $max = 10) |
|
| 62 | { |
|
| @@ 107-119 (lines=13) @@ | ||
| 104 | ||
| 105 | } |
|
| 106 | ||
| 107 | public function getPopularArticles($max = 5) |
|
| 108 | { |
|
| 109 | return $this->createQueryBuilder('a') |
|
| 110 | ->select('a, u, avg(c.rating) as rating') |
|
| 111 | ->leftJoin('a.comments', 'c') |
|
| 112 | ->join('a.user', 'u') |
|
| 113 | ->groupBy('a, u') |
|
| 114 | ->orderBy('rating', 'DESC') |
|
| 115 | ->setFirstResult(0) |
|
| 116 | ->setMaxResults($max) |
|
| 117 | ->getQuery() |
|
| 118 | ->getResult(); |
|
| 119 | } |
|
| 120 | ||
| 121 | public function getRecentArticles($max = 5) |
|
| 122 | { |
|