src/Repository/PostRepository.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Post;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use DateTime;
  7. /**
  8.  * @method Post|null find($id, $lockMode = null, $lockVersion = null)
  9.  * @method Post|null findOneBy(array $criteria, array $orderBy = null)
  10.  * @method Post[]    findAll()
  11.  * @method Post[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  12.  */
  13. class PostRepository extends ServiceEntityRepository
  14. {
  15.     public function __construct(ManagerRegistry $registry)
  16.     {
  17.         parent::__construct($registryPost::class);
  18.     }
  19.     public function search(int $page 1int $limit 3, ?string $keywords, ?DateTime $date)
  20.     {
  21.         $query $this->createQueryBuilder('s');
  22.         $query->where('s.type = :type')->setParameter('type''post');
  23.         $query->andWhere('s.status = :status')->setParameter('status''published');
  24.         if($date)
  25.             $query->andWhere('s.publishAt = :date')->setParameter('date'$date);
  26.         if($keywords && $keywords != '') {
  27.             $query->andWhere('LOWER(s.title) LIKE :keywords OR LOWER(s.content) LIKE :keywords')->setParameter('keywords''%'.strtolower($keywords).'%');
  28.         }
  29.         $query->orderBy('s.id''DESC');
  30.         $query->setMaxResults($limit)->setFirstResult((($page-1)*$limit));
  31.         return $query->getQuery()->getResult();
  32.     }
  33. }