* @method Realisateur|null find($id, $lockMode = null, $lockVersion = null) * @method Realisateur|null findOneBy(array $criteria, array $orderBy = null) * @method Realisateur[] findAll() * @method Realisateur[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class RealisateurRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Realisateur::class); } public function findByNom(string $nom): array { $qb = $this->createQueryBuilder("r"); $expr = $qb->expr(); $query = $qb ->select("r.id", "r.nom", "r.prenom") ->where($expr->like("r.nom", ":nom")) ->setParameter("nom", $nom . "%") ->getQuery(); return $query->getResult(); } public function findByNomComplet(string $nomComplet): array { $qb = $this->createQueryBuilder("r"); $expr = $qb->expr(); $tableau = explode(" ", $nomComplet); if (count($tableau) == 1) { $premier = $tableau[0]; $orPremier = $expr->orX( $expr->like("r.nom", ":premier"), $expr->like("r.prenom", ":premier"), ); $andExpression = $expr->andX($orPremier); $qb->setParameter("premier", $premier . "%"); } if (count($tableau) > 1) { $premier = $tableau[0]; $deuxieme = $tableau[1]; $orPremier = $expr->orX( $expr->eq("r.nom", ":premier"), $expr->eq("r.prenom", ":premier"), ); $orDeuxieme = $expr->orX( $expr->like("r.nom", ":deuxieme"), $expr->like("r.prenom", ":deuxieme"), ); $andExpression = $expr->andX($orPremier, $orDeuxieme); $qb->setParameter("premier", $premier)->setParameter( "deuxieme", $deuxieme . "%", ); } $query = $qb ->select("r.id", "r.nom", "r.prenom") ->where($andExpression) ->getQuery(); return $query->getResult(); } public function findNomsComplets(): array { $qb = $this->createQueryBuilder("r"); $query = $qb->select("r.nomComplet")->getQuery(); return $query->getArrayResult(); } public function findRealisateurLike(?string $query = null): ?array { $qb = $this->createQueryBuilder("r"); $qb->where( $qb->expr()->like("r.nomComplet", ":realName"), )->setParameter("realName", "%" . $query . "%"); return $qb->getQuery()->getResult(); } }