src/Repository/PageRepository.php line 41

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Repository;
  4. use App\Entity\Page;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. /**
  8.  * @method Page|null find($id, $lockMode = null, $lockVersion = null)
  9.  * @method Page|null findOneBy(array $criteria, array $orderBy = null)
  10.  * @method Page[]    findAll()
  11.  * @method Page[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  12.  */
  13. class PageRepository extends ServiceEntityRepository
  14. {
  15.     public function __construct(ManagerRegistry $registry)
  16.     {
  17.         parent::__construct($registryPage::class);
  18.     }
  19.     public function getPageBySlugs(string $slug)
  20.     {
  21.         return $this->createQueryBuilder('p')
  22.             ->where('p.slugs LIKE :slug')
  23.             ->setParameter('slug''%'.$slug.'%')
  24.             ->andWhere('p.active = 1')
  25.             ->getQuery()
  26.             ->getOneOrNullResult();
  27.     }
  28.     public function getPageBySlug(string $slug)
  29.     {
  30.         return $this->createQueryBuilder('p')
  31.             ->where('p.slug LIKE :slug')
  32.             ->setParameter('slug'$slug)
  33.             ->andWhere('p.active = 1')
  34.             ->getQuery()
  35.             ->getOneOrNullResult();
  36.     }
  37.     public function getlatestPosts(?int $limitstring $orderstring $locale)
  38.     {
  39.         $qb $this->createQueryBuilder('p')
  40.             ->where('p.slugs LIKE :slug')
  41.             ->setParameter('slug''%"'.$locale.'"%')
  42.             ->andWhere('p.active = 1')
  43.             ->andWhere('p.type = :type')
  44.             ->setParameter('type''post');
  45.         if ($limit) {
  46.             $qb
  47.                 ->setMaxResults($limit);
  48.         }
  49.         $qb $qb
  50.             ->orderBy('p.id'$order)
  51.             ->getQuery()
  52.             ->getResult();
  53.         return $qb;
  54.     }
  55.     /**
  56.      * Get one page in array.
  57.      *
  58.      * @return mixed
  59.      */
  60.     public function getOnePage(int $id)
  61.     {
  62.         return $this->createQueryBuilder('p')
  63.             ->where('p.id = :id')
  64.             ->setParameter('id'$id)
  65.             ->getQuery()
  66.             ->getArrayResult();
  67.     }
  68.     public function getCountPages()
  69.     {
  70.         return $this->createQueryBuilder('p')
  71.             ->select('count(p.id)')
  72.             ->where('p.type != :type')
  73.             ->setParameter('type''post')
  74.             ->orWhere('p.type IS NULL')
  75.             ->getQuery()
  76.             ->getSingleScalarResult()
  77.         ;
  78.     }
  79.     public function getPages()
  80.     {
  81.         return $this->createQueryBuilder('p')
  82.             ->addSelect('bp')// page
  83.             ->addSelect('bl')// block
  84.             ->leftJoin('p.pageBlocks''bp')
  85.             ->leftJoin('bp.block''bl')
  86.             ->where('p.name != :name')
  87.             ->setParameter('name''site')
  88.             ->orderBy('bp.itemOrder''ASC')
  89.             ->getQuery()
  90.             ->getResult()
  91.         ;
  92.     }
  93.     public function getPagesDesc()
  94.     {
  95.         return $this->createQueryBuilder('p')
  96.             ->addSelect('bp')// page
  97.             ->addSelect('bl')// block
  98.             ->leftJoin('p.pageBlocks''bp')
  99.             ->leftJoin('bp.block''bl')
  100.             ->where('p.name != :name')
  101.             ->setParameter('name''site')
  102.             ->orderBy('p.name''ASC')
  103.             ->getQuery()
  104.             ->getResult()
  105.         ;
  106.     }
  107.     public function getArticles()
  108.     {
  109.         return $this->createQueryBuilder('p')
  110.             ->addSelect('bp')// page
  111.             ->addSelect('bl')// block
  112.             ->leftJoin('p.pageBlocks''bp')
  113.             ->leftJoin('bp.block''bl')
  114.             ->where('p.name != :name')
  115.             ->setParameter('name''site')
  116.             ->andWhere('p.type = :type')
  117.             ->setParameter('type'Page::PAGE_TYPE_POST)
  118.             ->orderBy('p.id''DESC')
  119.             ->getQuery()
  120.             ->getResult()
  121.         ;
  122.     }
  123. }