From faa86e06ba3032fdb98f3c0f79c72e8581d3c96f Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sun, 25 Sep 2016 11:21:13 +0200 Subject: Fix tags count in menu Move enable cache for Tag in the Entity because function `find*` should return result and not a Query --- .../CoreBundle/Repository/TagRepository.php | 34 ++++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'src/Wallabag/CoreBundle/Repository') diff --git a/src/Wallabag/CoreBundle/Repository/TagRepository.php b/src/Wallabag/CoreBundle/Repository/TagRepository.php index 41f61607..f5c4ea6a 100644 --- a/src/Wallabag/CoreBundle/Repository/TagRepository.php +++ b/src/Wallabag/CoreBundle/Repository/TagRepository.php @@ -7,17 +7,45 @@ use Doctrine\ORM\EntityRepository; class TagRepository extends EntityRepository { /** - * Find Tags. + * Find all tags per user. * * @param int $userId + * @param int $cacheLifeTime Duration of the cache for this query * * @return array */ - public function findAllTags($userId) + public function findAllTags($userId, $cacheLifeTime = null) + { + $query = $this->createQueryBuilder('t') + ->select('t') + ->leftJoin('t.entries', 'e') + ->where('e.user = :userId')->setParameter('userId', $userId) + ->groupBy('t.slug') + ->getQuery(); + + if (null !== $cacheLifeTime) { + $query->useQueryCache(true); + $query->useResultCache(true); + $query->setResultCacheLifetime($cacheLifeTime); + } + + return $query->getArrayResult(); + } + + /** + * Find all tags with associated entries per user. + * + * @param int $userId + * + * @return array + */ + public function findAllTagsWithEntries($userId) { return $this->createQueryBuilder('t') ->leftJoin('t.entries', 'e') - ->where('e.user = :userId')->setParameter('userId', $userId); + ->where('e.user = :userId')->setParameter('userId', $userId) + ->getQuery() + ->getResult(); } /** -- cgit v1.2.3 From 289875836a09944f5993d33753042abfef13809e Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sun, 25 Sep 2016 12:23:44 +0200 Subject: Fix tag count for PostgreSQL --- src/Wallabag/CoreBundle/Repository/TagRepository.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/Wallabag/CoreBundle/Repository') diff --git a/src/Wallabag/CoreBundle/Repository/TagRepository.php b/src/Wallabag/CoreBundle/Repository/TagRepository.php index f5c4ea6a..9d127da7 100644 --- a/src/Wallabag/CoreBundle/Repository/TagRepository.php +++ b/src/Wallabag/CoreBundle/Repository/TagRepository.php @@ -7,17 +7,17 @@ use Doctrine\ORM\EntityRepository; class TagRepository extends EntityRepository { /** - * Find all tags per user. + * Count all tags per user. * * @param int $userId * @param int $cacheLifeTime Duration of the cache for this query * - * @return array + * @return int */ - public function findAllTags($userId, $cacheLifeTime = null) + public function countAllTags($userId, $cacheLifeTime = null) { $query = $this->createQueryBuilder('t') - ->select('t') + ->select('t.slug') ->leftJoin('t.entries', 'e') ->where('e.user = :userId')->setParameter('userId', $userId) ->groupBy('t.slug') @@ -29,7 +29,7 @@ class TagRepository extends EntityRepository $query->setResultCacheLifetime($cacheLifeTime); } - return $query->getArrayResult(); + return count($query->getArrayResult()); } /** -- cgit v1.2.3