src/Repository/PageRepository.php line 29

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