RealisateurRepository.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Realisateur;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7. * @extends ServiceEntityRepository<Realisateur>
  8. * @method Realisateur|null find($id, $lockMode = null, $lockVersion = null)
  9. * @method Realisateur|null findOneBy(array $criteria, array $orderBy = null)
  10. * @method Realisateur[] findAll()
  11. * @method Realisateur[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  12. */
  13. class RealisateurRepository extends ServiceEntityRepository
  14. {
  15. public function __construct(ManagerRegistry $registry)
  16. {
  17. parent::__construct($registry, Realisateur::class);
  18. }
  19. public function findByNom(string $nom): array
  20. {
  21. $qb = $this->createQueryBuilder("r");
  22. $expr = $qb->expr();
  23. $query = $qb
  24. ->select("r.id", "r.nom", "r.prenom")
  25. ->where($expr->like("r.nom", ":nom"))
  26. ->setParameter("nom", $nom . "%")
  27. ->getQuery();
  28. return $query->getResult();
  29. }
  30. public function findByNomComplet(string $nomComplet): array
  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->setParameter("premier", $premier)->setParameter(
  57. "deuxieme",
  58. $deuxieme . "%",
  59. );
  60. }
  61. $query = $qb
  62. ->select("r.id", "r.nom", "r.prenom")
  63. ->where($andExpression)
  64. ->getQuery();
  65. return $query->getResult();
  66. }
  67. public function findNomsComplets(): array
  68. {
  69. $qb = $this->createQueryBuilder("r");
  70. $query = $qb->select("r.nomComplet")->getQuery();
  71. return $query->getArrayResult();
  72. }
  73. public function findRealisateurLike(?string $query = null): ?array
  74. {
  75. $qb = $this->createQueryBuilder("r");
  76. $qb->where(
  77. $qb->expr()->like("r.nomComplet", ":realName"),
  78. )->setParameter("realName", "%" . $query . "%");
  79. return $qb->getQuery()->getResult();
  80. }
  81. }