1: <?php
2: namespace TIC\AcmeBundle\Repository;
3:
4: use TIC\DormBundle\Base\TICRepository as BaseRepository;
5: #use Doctrine\Common\Persistence\ManagerRegistry;
6: #use App\Entity\FooBar;
7: use Doctrine\ORM\QueryBuilder;
8:
9: use TIC\AcmeBundle\Entity\FooBar as RepoEntity;
10: use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
11:
12: /**
13: * Repository pour les requêtes sur les entités FooBar.
14: *
15: * @method FooBar|null find($id, $lockMode = null, $lockVersion = null)
16: * @method FooBar|null findOneBy(array $criteria, array $orderBy = null)
17: * @method FooBar[] findAll()
18: * @method FooBar[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
19: */
20: class FooBarRepository extends BaseRepository
21: {
22: # public $alias = 'a';
23: # public $sortBy = ['name' => 'ASC'];
24:
25: /**
26: * Application des filtres sur un query builder.
27: *
28: * @param array $filters
29: * @param mixed $qb
30: * @return QueryBuilder
31: */
32: public function qbFilters(array $filters = array(), $qb = null): QueryBuilder
33: {
34: $a = $this->initQB(parent::qbFilters($filters, $qb)) . '.';
35:
36: foreach ($filters as $type => $value) switch ($type) {
37: // ajouter ici les filtres personnalisés pour les recherches de ce repository...
38: case 'name':
39: if ($value !== null) $qb->andWhere($a.$type.' = :'.$type)->setParameter($type, $value);
40: break;
41: }
42: return $qb;
43: }
44:
45: }