From 420b3c9d7364ea5da96a15ca5ec70910493dc526 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sat, 10 Sep 2022 11:45:58 +0200 Subject: [PATCH] update similar posts --- src/Repository/Blog/PostRepository.php | 46 ++++++++++++++++---------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/src/Repository/Blog/PostRepository.php b/src/Repository/Blog/PostRepository.php index cfcfb88..15733c4 100644 --- a/src/Repository/Blog/PostRepository.php +++ b/src/Repository/Blog/PostRepository.php @@ -22,29 +22,41 @@ class PostRepository extends ServiceEntityRepository { $query1 = $this->createQueryBuilder('p'); $query2 = $this->createQueryBuilder('p'); + $categories = $post->getCategories()->getValues(); + $tags = $post->getTags(); $query1->orderBy('p.publishedAt', 'DESC'); - foreach ($post->getTags() as $k => $entity) { - $query1 - ->orWhere('p.tags LIKE :tag'.$k) - ->setParameter(':tag'.$k, '%"'.$entity['label'].'"%') - ; + if (count($tags)) { + foreach ($tags as $k => $entity) { + $query1 + ->orWhere('p.tags LIKE :tag'.$k) + ->setParameter(':tag'.$k, '%"'.$entity['label'].'"%') + ; + } + + $search1 = $query1->getQuery()->getResult(); + } else { + $search1 = []; } - $query2 - ->orderBy('p.publishedAt', 'DESC') - ->andWhere('p.status = 1') - ->join('p.categories', 'c') - ->where('c.id IN (:ids)') - ->setParameter(':ids', array_map( - fn ($e) => $e->getId(), - $post->getCategories()->getValues() - )) - ; + if (count($categories)) { + $query2 + ->orderBy('p.publishedAt', 'DESC') + ->andWhere('p.status = 1') + ->join('p.categories', 'c') + ->where('c.id IN (:ids)') + ->setParameter(':ids', array_map( + fn ($e) => $e->getId(), + $categories + )) + ; + + $search2 = $query2->getQuery()->getResult(); + } else { + $search2 = []; + } - $search1 = $query1->getQuery()->getResult(); - $search2 = $query2->getQuery()->getResult(); $now = new \DateTime(); $posts = [];