RealisateurRepository.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Realisateur;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Common\Persistence\ManagerRegistry;
  6. /**
  7. * @method Realisateur|null find($id, $lockMode = null, $lockVersion = null)
  8. * @method Realisateur|null findOneBy(array $criteria, array $orderBy = null)
  9. * @method Realisateur[] findAll()
  10. * @method Realisateur[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  11. */
  12. class RealisateurRepository extends ServiceEntityRepository
  13. {
  14. public function __construct(ManagerRegistry $registry)
  15. {
  16. parent::__construct($registry, Realisateur::class);
  17. }
  18. public function findByNom($nom)
  19. {
  20. $qb = $this->createQueryBuilder ('r');
  21. $expr = $qb->expr();
  22. $query = $qb
  23. ->select('r.id', 'r.nom', 'r.prenom')
  24. ->where(
  25. $expr->like('r.nom', ':nom'))
  26. ->setParameter('nom', $nom.'%')
  27. ->getQuery();
  28. return $query->getResult();
  29. }
  30. public function findByNomComplet($nomComplet)
  31. {
  32. $qb = $this->createQueryBuilder ('r');
  33. $expr = $qb->expr();
  34. $tableau = explode(' ', $nomComplet);
  35. if (count($tableau) == 1) {
  36. $premier = $tableau[0];
  37. $orPremier = $expr->orX(
  38. $expr->like('r.nom', ':premier'),
  39. $expr->like('r.prenom', ':premier')
  40. );
  41. $andExpression = $expr->andX($orPremier);
  42. $qb->setParameter('premier', $premier.'%');
  43. }
  44. if (count($tableau) > 1) {
  45. $premier = $tableau[0];
  46. $deuxieme = $tableau[1];
  47. $orPremier = $expr->orX(
  48. $expr->eq('r.nom', ':premier'),
  49. $expr->eq('r.prenom', ':premier')
  50. );
  51. $orDeuxieme = $expr->orX(
  52. $expr->like('r.nom', ':deuxieme'),
  53. $expr->like('r.prenom', ':deuxieme')
  54. );
  55. $andExpression = $expr->andX($orPremier, $orDeuxieme);
  56. $qb
  57. ->setParameter('premier', $premier)
  58. ->setParameter('deuxieme', $deuxieme.'%');
  59. }
  60. $query = $qb
  61. ->select('r.id', 'r.nom', 'r.prenom')
  62. ->where($andExpression)
  63. ->getQuery();
  64. return $query->getResult();
  65. }
  66. public function findNomsComplets ()
  67. {
  68. $qb = $this->createQueryBuilder('r');
  69. $query = $qb
  70. ->select('r.nomComplet')
  71. ->getQuery();
  72. return $query->getArrayResult();
  73. }
  74. }