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