src/Repository/BlogRepository.php line 67

  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Blog;
  4. use App\Entity\VehicleManufacturer;
  5. use App\Entity\VehicleModel;
  6. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. /**
  9.  * @extends ServiceEntityRepository<Blog>
  10.  *
  11.  * @method Blog|null find($id, $lockMode = null, $lockVersion = null)
  12.  * @method Blog|null findOneBy(array $criteria, array $orderBy = null)
  13.  * @method Blog[]    findAll()
  14.  * @method Blog[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  15.  */
  16. class BlogRepository extends ServiceEntityRepository
  17. {
  18.     public function __construct(ManagerRegistry $registry)
  19.     {
  20.         parent::__construct($registryBlog::class);
  21.     }
  22.     /**
  23.      * @return Blog[]
  24.      */
  25.     public function findTop(): array
  26.     {
  27.         return  $this->createQueryBuilder('b')
  28.             ->andWhere('b.visible != false')
  29.             ->andWhere('b.top = true')
  30.             ->orderBy('b.createAt''DESC')
  31.             ->getQuery()
  32.             ->getResult();
  33.     }
  34.     /**
  35.      * @param int $offset
  36.      * @param int $limit
  37.      * @return Blog[]
  38.      */
  39.     public function findOffsetLimit(int $offsetint $limit): array
  40.     {
  41.         return $this->createQueryBuilder('b')
  42.             ->where('b.visible = true')
  43.             ->andWhere('b.createAt <= :dateCreated')
  44.             ->setParameter('dateCreated', new \DateTime())
  45.             ->orderBy('b.createAt''DESC')
  46.             ->setFirstResult($offset)
  47.             ->setMaxResults($limit)
  48.             ->getQuery()
  49.             ->getResult();
  50.     }
  51.     /**
  52.      * @param VehicleManufacturer|null $vehicleManufacturer
  53.      * @param VehicleModel|null $vehicleModel
  54.      * @param int $limit
  55.      * @return Blog[]
  56.      */
  57.     public function findRandActive(VehicleManufacturer  $vehicleManufacturer null,
  58.                                    VehicleModel $vehicleModel null int $id,  int $limit): array
  59.     {
  60.         $return  =   $this->createQueryBuilder('b')
  61.             ->andWhere('b.visible != false')
  62.             ->andWhere('b.createAt >= :date')
  63.             ->andWhere('b.id != :id')
  64.             ->andWhere('b.createAt <= :dateCreated')
  65.             ->setParameter('dateCreated', new \DateTime())
  66.             ->setParameter('id'$id)
  67.             ->setParameter('date', new \DateTime('-5 year'));
  68.         if($vehicleManufacturer) {
  69.             $return->andWhere('b.vehicleManufacturer = :manufacturer')
  70.                 ->setParameter('manufacturer'$vehicleManufacturer);
  71.         }
  72.         if($vehicleModel) {
  73.             $return->andWhere('b.vehicleModel = :model')
  74.                 ->setParameter('model'$vehicleModel);
  75.         }
  76.         return  $return->orderBy('RAND()')
  77.             ->setMaxResults($limit)
  78.             ->getQuery()
  79.             ->getResult();
  80.     }
  81.     /**
  82.      * @return Blog[] Returns an array of Dealer objects
  83.      */
  84.     public function findHomepage(): array
  85.     {
  86.         return  $this->createQueryBuilder('b')
  87.             ->andWhere('b.visible = true')
  88.             ->andWhere('b.visibleHomepage = true')
  89.              ->andWhere('b.createAt <= :date')
  90.             ->setParameter('date', new \DateTime())
  91.             ->orderBy('b.createAt''DESC')
  92.             ->setMaxResults(10)
  93.             ->getQuery()
  94.             ->getResult();
  95.     }
  96.     /**
  97.      * @return Blog[] Returns an array of Dealer objects
  98.      */
  99.     public function findNewActive(int $limit): array
  100.     {
  101.         return  $this->createQueryBuilder('b')
  102.             ->andWhere('b.visible = true')
  103.             ->andWhere('b.visibleHomepage = true')
  104.             ->andWhere('b.createAt <= :date')
  105.             ->setParameter('date', new \DateTime())
  106.             ->orderBy('b.createAt''DESC')
  107.             ->setMaxResults($limit)
  108.             ->getQuery()
  109.             ->getResult();
  110.     }
  111.     public function findOneVisibleUrl(string $url): ?Blog
  112.     {
  113.         return  $this->createQueryBuilder('b')
  114.             ->andWhere('b.visible = true')
  115.             ->andWhere('b.createAt <= :date')
  116.             ->setParameter('date', new \DateTime())
  117.             ->andWhere('b.url = :url')
  118.             ->setParameter('url'$url)
  119.             ->getQuery()
  120.             ->getOneOrNullResult();
  121.     }
  122.     /**
  123.      * @param array<string> $parameters
  124.      * @return Blog[] Returns an array of Dealer objects
  125.      */
  126.     public function findQuery(array $parameters): array
  127.     {
  128.         $return =  $this->createQueryBuilder('b') ;
  129.         if(isset($parameters['urlKind']) && $parameters['urlKind'] != '') {
  130.             $return->leftJoin('b.kinds''bks')
  131.                  ->andWhere('bks.url  = :urlKind')
  132.                 ->setParameter('urlKind',  $parameters['urlKind'] );
  133.         }
  134.         if(isset($parameters['name']) && $parameters['name'] != '') {
  135.             $return->andWhere('b.name LIKE :name')
  136.                 ->setParameter('name''%'.$parameters['name'].'%');
  137.         }
  138.         if(isset($parameters['visible']) && $parameters['visible'] != '') {
  139.             $return->andWhere('b.visible = true')
  140.             ->andWhere('b.createAt <= :date')
  141.             ->setParameter('date', new \DateTime());
  142.         }
  143.         return  $return->orderBy('b.createAt''DESC')
  144.             ->getQuery()
  145.             ->getResult();
  146.     }
  147.     /**
  148.      * @param array<string> $parameters
  149.      * @return Blog[]
  150.      */
  151.     public function findQueryWithManufacturer(array $parameters): array
  152.     {
  153.         $return $this->createQueryBuilder('b');
  154.         if(isset($parameters['urlKind']) && $parameters['urlKind'] != '') {
  155.             $return->leftJoin('b.kinds''bks')
  156.                  ->andWhere('bks.url = :urlKind')
  157.                 ->setParameter('urlKind'$parameters['urlKind']);
  158.         }
  159.         if(isset($parameters['manufacturer']) && $parameters['manufacturer'] != '') {
  160.             $return->andWhere('b.vehicleManufacturer = :manufacturer')
  161.                 ->setParameter('manufacturer'$parameters['manufacturer']);
  162.         }
  163.         if(isset($parameters['visible']) && $parameters['visible'] != '') {
  164.             $return->andWhere('b.visible = true')
  165.                 ->andWhere('b.createAt <= :date')
  166.                 ->setParameter('date', new \DateTime());
  167.         }
  168.         return $return->orderBy('b.createAt''DESC')
  169.             ->getQuery()
  170.             ->getResult();
  171.     }
  172.     /**
  173.      * @param array<string> $parameters
  174.      * @return Blog[]
  175.      */
  176.     public function findQueryWithManufacturerAndModel(array $parameters): array
  177.     {
  178.         $return $this->createQueryBuilder('b');
  179.         if(isset($parameters['urlKind']) && $parameters['urlKind'] != '') {
  180.             $return->leftJoin('b.kinds''bks')
  181.                  ->andWhere('bks.url = :urlKind')
  182.                 ->setParameter('urlKind'$parameters['urlKind']);
  183.         }
  184.         if(isset($parameters['manufacturer']) && $parameters['manufacturer'] != '') {
  185.             $return->andWhere('b.vehicleManufacturer = :manufacturer')
  186.                 ->setParameter('manufacturer'$parameters['manufacturer']);
  187.         }
  188.         if(isset($parameters['model']) && $parameters['model'] != '') {
  189.             $return->andWhere('b.vehicleModel = :model')
  190.                 ->setParameter('model'$parameters['model']);
  191.         }
  192.         if(isset($parameters['visible']) && $parameters['visible'] != '') {
  193.             $return->andWhere('b.visible = true')
  194.                 ->andWhere('b.createAt <= :date')
  195.                 ->setParameter('date', new \DateTime());
  196.         }
  197.         return $return->orderBy('b.createAt''DESC')
  198.             ->getQuery()
  199.             ->getResult();
  200.     }
  201.     public function save(Blog $entitybool $flush false): void
  202.     {
  203.         $this->getEntityManager()->persist($entity);
  204.         if ($flush) {
  205.             $this->getEntityManager()->flush();
  206.         }
  207.     }
  208.     public function remove(Blog $entitybool $flush false): void
  209.     {
  210.         $this->getEntityManager()->remove($entity);
  211.         if ($flush) {
  212.             $this->getEntityManager()->flush();
  213.         }
  214.     }
  215. }