<?php
namespace App\Repository;
use App\Entity\Machine;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\QueryBuilder;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method Machine|null find($id, $lockMode = null, $lockVersion = null)
* @method Machine|null findOneBy(array $criteria, array $orderBy = null)
* @method Machine[] findAll()
* @method Machine[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class MachineRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Machine::class);
}
public function validated()
{
return $this->createQueryBuilder('m')
->innerJoin('m.category', 'cat')
->where('m.active = 1')
->andWhere('cat.active = 1')
;
;
}
public function bySlug(string $slug)
{
$qb = $this->validated();
if($slug)
$qb
->select('m, cat')
->andWhere('m.slug = :slug')
->setParameter('slug', $slug);
else
$qb->addOrderBy('m.position', 'ASC');
$qb->setMaxResults(1);
return $qb->getQuery()->getOneOrNullResult();
}
public function listByCategory(string $slug = null)
{
$qb = $this->validated();
if ($slug) {
$qb
->select('m, cat')
->andWhere('cat.slug = :slug')
->setParameter('slug', $slug)
->addOrderBy('m.position', 'ASC')
;
} else {
$qb
->select('m, cat')
->addOrderBy('m.position', 'ASC')
;
}
return $qb->getQuery()->getResult();
}
/*
public function validated()
{
return $this->createQueryBuilder('c')
->where('c.active = 1')
->leftJoin('c.subservices', 'sub', 'WITH', 'sub.active = 1');
;
}
public function listActive()
{
$qb = $this->validated()
->select('c, sub')
->addOrderBy('c.position', 'ASC');
return $qb->getQuery()->getResult();
}
public function listActiveMenu()
{
$qb = $this->validated()
->select('c')
->andWhere('c.active_menu = 1')
->addOrderBy('c.position', 'ASC')
;
return $qb->getQuery()->getResult();
}
public function bySlug(string $slug)
{
$qb = $this->validated();
if($slug)
$qb
->select('c, sub')
->andWhere('c.slug = :slug')
->setParameter('slug', $slug);
else
$qb->addOrderBy('c.position', 'ASC');
$qb->setMaxResults(1);
return $qb->getQuery()->getOneOrNullResult();
}
*/
}