|
@@ -9,6 +9,8 @@ use Doctrine\ORM\QueryBuilder;
|
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * @extends ServiceEntityRepository<Film>
|
|
|
|
|
+ *
|
|
|
* @method Film|null find($id, $lockMode = null, $lockVersion = null)
|
|
* @method Film|null find($id, $lockMode = null, $lockVersion = null)
|
|
|
* @method Film|null findOneBy(array $criteria, array $orderBy = null)
|
|
* @method Film|null findOneBy(array $criteria, array $orderBy = null)
|
|
|
* @method Film[] findAll()
|
|
* @method Film[] findAll()
|
|
@@ -22,257 +24,254 @@ class FilmRepository extends ServiceEntityRepository
|
|
|
parent::__construct($registry, Film::class);
|
|
parent::__construct($registry, Film::class);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function findFilm($id): Film
|
|
|
|
|
|
|
+ public function findFilm(int $id): Film
|
|
|
{
|
|
{
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
$query = $qb
|
|
$query = $qb
|
|
|
- ->select('f.titre', 'f.annee')
|
|
|
|
|
- ->where('f.id = :id')
|
|
|
|
|
- ->setParameter('id', $id)
|
|
|
|
|
|
|
+ ->select("f.titre", "f.annee")
|
|
|
|
|
+ ->where("f.id = :id")
|
|
|
|
|
+ ->setParameter("id", $id)
|
|
|
->getQuery();
|
|
->getQuery();
|
|
|
return $query->getSingleResult();
|
|
return $query->getSingleResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function queryFilmWithGenre(array $genreNames, int $page = 1, array $filters = []) : QueryBuilder
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param array<int, string> $genreNames
|
|
|
|
|
+ * @param array<string, string> $filters
|
|
|
|
|
+ */
|
|
|
|
|
+ public function queryFilmWithGenre(
|
|
|
|
|
+ array $genreNames,
|
|
|
|
|
+ int $page = 1,
|
|
|
|
|
+ array $filters = [],
|
|
|
|
|
+ ): QueryBuilder {
|
|
|
$qb = $this->queryFilter($page, $filters);
|
|
$qb = $this->queryFilter($page, $filters);
|
|
|
- $qb
|
|
|
|
|
- ->innerJoin('f.genres', 'g')
|
|
|
|
|
- ->addSelect('f');
|
|
|
|
|
|
|
+ $qb->innerJoin("f.genres", "g")->addSelect("f");
|
|
|
|
|
|
|
|
- $qb
|
|
|
|
|
- ->andWhere($qb->expr()->in('g.name', ':genrenames'))
|
|
|
|
|
- ->setParameter('genrenames', $genreNames)
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ $qb->andWhere($qb->expr()->in("g.name", ":genrenames"))->setParameter(
|
|
|
|
|
+ "genrenames",
|
|
|
|
|
+ $genreNames,
|
|
|
|
|
+ );
|
|
|
|
|
|
|
|
return $qb;
|
|
return $qb;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param array<int, string> $genreNames
|
|
|
|
|
+ */
|
|
|
public function findFilmWithGenre(array $genreNames): array
|
|
public function findFilmWithGenre(array $genreNames): array
|
|
|
{
|
|
{
|
|
|
- return $this->queryFilmWithGenre($genreNames)
|
|
|
|
|
- ->getQuery()
|
|
|
|
|
- ->getResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ return $this->queryFilmWithGenre($genreNames)->getQuery()->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function queryFilmWithReal(array $realisateursNames, int $page = 1, array $filters = []): QueryBuilder
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param array<int, string> $realisateursNames
|
|
|
|
|
+ * @param array<string, string> $filters
|
|
|
|
|
+ */
|
|
|
|
|
+ public function queryFilmWithReal(
|
|
|
|
|
+ array $realisateursNames,
|
|
|
|
|
+ int $page = 1,
|
|
|
|
|
+ array $filters = [],
|
|
|
|
|
+ ): QueryBuilder {
|
|
|
$qb = $this->queryFilter($page, $filters);
|
|
$qb = $this->queryFilter($page, $filters);
|
|
|
- $qb
|
|
|
|
|
- ->leftJoin('f.realisateurs', 'rea')
|
|
|
|
|
- ->addSelect('f')
|
|
|
|
|
- ->andWhere($qb->expr()->in('rea.nomComplet', ':realisateurs'))
|
|
|
|
|
- ->setParameter('realisateurs', $realisateursNames)
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ $qb->leftJoin("f.realisateurs", "rea")
|
|
|
|
|
+ ->addSelect("f")
|
|
|
|
|
+ ->andWhere($qb->expr()->in("rea.nomComplet", ":realisateurs"))
|
|
|
|
|
+ ->setParameter("realisateurs", $realisateursNames);
|
|
|
return $qb;
|
|
return $qb;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param array<int, string> $realisateursNames
|
|
|
|
|
+ */
|
|
|
public function findFilmWithReal(array $realisateursNames): array
|
|
public function findFilmWithReal(array $realisateursNames): array
|
|
|
{
|
|
{
|
|
|
return $this->queryFilmWithReal($realisateursNames)
|
|
return $this->queryFilmWithReal($realisateursNames)
|
|
|
->getQuery()
|
|
->getQuery()
|
|
|
- ->getResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ ->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function findFilmWithRealLike($query): array
|
|
|
|
|
|
|
+ public function findFilmWithRealLike(string $query): array
|
|
|
{
|
|
{
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
- $qb
|
|
|
|
|
- ->innerJoin('f.realisateurs', 'r')
|
|
|
|
|
- ->addSelect('f');
|
|
|
|
|
- $qb
|
|
|
|
|
- ->where($qb->expr()->like('r.nomComplet', ':nomComplet'))
|
|
|
|
|
- ->setParameter('nomComplet', '%'.$query.'%');
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
|
|
+ $qb->innerJoin("f.realisateurs", "r")->addSelect("f");
|
|
|
|
|
+ $qb->where(
|
|
|
|
|
+ $qb->expr()->like("r.nomComplet", ":nomComplet"),
|
|
|
|
|
+ )->setParameter("nomComplet", "%" . $query . "%");
|
|
|
|
|
|
|
|
return $qb->getQuery()->getResult();
|
|
return $qb->getQuery()->getResult();
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function findFilmWithGenreLike($genreName): array
|
|
|
|
|
|
|
+ public function findFilmWithGenreLike(string $genreName): array
|
|
|
{
|
|
{
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
- $qb
|
|
|
|
|
- ->innerJoin('f.genres', 'g')
|
|
|
|
|
- ->addSelect('f');
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
|
|
+ $qb->innerJoin("f.genres", "g")->addSelect("f");
|
|
|
|
|
|
|
|
- $qb->where($qb->expr()->like('g.name', ':genreName'))
|
|
|
|
|
- ->setParameter('genreName', '%'.$genreName.'%');
|
|
|
|
|
|
|
+ $qb->where($qb->expr()->like("g.name", ":genreName"))->setParameter(
|
|
|
|
|
+ "genreName",
|
|
|
|
|
+ "%" . $genreName . "%",
|
|
|
|
|
+ );
|
|
|
|
|
|
|
|
- return $qb
|
|
|
|
|
- ->getQuery()
|
|
|
|
|
- ->getResult();
|
|
|
|
|
|
|
+ return $qb->getQuery()->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function queryFilter(int $page = 1, array $filters = []): QueryBuilder
|
|
|
|
|
- {
|
|
|
|
|
- $qb = $this->createQueryBuilder('f')
|
|
|
|
|
- ->orderBy('f.'.($filters['sortBy'] ?? 'dateSubmited'), $filters['sortOrder'] ?? 'DESC')
|
|
|
|
|
- ;
|
|
|
|
|
-
|
|
|
|
|
- if (!empty($filters['userWantToView'])) {
|
|
|
|
|
- $qb
|
|
|
|
|
- ->leftJoin('f.usersWantToView', 'wan')
|
|
|
|
|
- ->andWhere($qb->expr()->in('wan', ':user'))
|
|
|
|
|
- ->setParameter('user', $filters['userWantToView'])
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param array<string, string> $filters
|
|
|
|
|
+ */
|
|
|
|
|
+ public function queryFilter(
|
|
|
|
|
+ int $page = 1,
|
|
|
|
|
+ array $filters = [],
|
|
|
|
|
+ ): QueryBuilder {
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f")->orderBy(
|
|
|
|
|
+ "f." . ($filters["sortBy"] ?? "dateSubmited"),
|
|
|
|
|
+ $filters["sortOrder"] ?? "DESC",
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ if (!empty($filters["userWantToView"])) {
|
|
|
|
|
+ $qb->leftJoin("f.usersWantToView", "wan")
|
|
|
|
|
+ ->andWhere($qb->expr()->in("wan", ":user"))
|
|
|
|
|
+ ->setParameter("user", $filters["userWantToView"]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (!empty($filters['limit'])) {
|
|
|
|
|
- $limit = (int)$filters['limit'];
|
|
|
|
|
- $qb->setFirstResult(($page * $limit) - $limit);
|
|
|
|
|
|
|
+ if (!empty($filters["limit"])) {
|
|
|
|
|
+ $limit = (int) $filters["limit"];
|
|
|
|
|
+ $qb->setFirstResult($page * $limit - $limit);
|
|
|
$qb->setMaxResults($limit);
|
|
$qb->setMaxResults($limit);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- if (!empty($filters['note'])) {
|
|
|
|
|
- $qb
|
|
|
|
|
- ->andWhere('f.note >= :note')
|
|
|
|
|
- ->setParameter('note', $filters['note'])
|
|
|
|
|
- ;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (!empty($filters['username'])) {
|
|
|
|
|
- $qb
|
|
|
|
|
- ->andWhere('f.authered = :authered')
|
|
|
|
|
- ->setParameter('authered', $filters['username'])
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (!empty($filters["note"])) {
|
|
|
|
|
+ $qb->andWhere("f.note >= :note")->setParameter(
|
|
|
|
|
+ "note",
|
|
|
|
|
+ $filters["note"],
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!empty($filters["username"])) {
|
|
|
|
|
+ $qb->andWhere("f.authered = :authered")->setParameter(
|
|
|
|
|
+ "authered",
|
|
|
|
|
+ $filters["username"],
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
return $qb;
|
|
return $qb;
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function queryTous ($page = 1, array $filters = []): QueryBuilder
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param array<string, string> $filters
|
|
|
|
|
+ */
|
|
|
|
|
+ public function queryTous(int $page = 1, array $filters = []): QueryBuilder
|
|
|
{
|
|
{
|
|
|
$qb = $this->queryFilter($page, $filters)
|
|
$qb = $this->queryFilter($page, $filters)
|
|
|
- ->leftJoin('f.authered', 'aut')->addSelect('aut')
|
|
|
|
|
- ->leftJoin('f.genres', 'gen')->addSelect('gen')
|
|
|
|
|
- ->leftJoin('f.realisateurs', 'rea')->addSelect('rea')
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ ->leftJoin("f.authered", "aut")
|
|
|
|
|
+ ->addSelect("aut")
|
|
|
|
|
+ ->leftJoin("f.genres", "gen")
|
|
|
|
|
+ ->addSelect("gen")
|
|
|
|
|
+ ->leftJoin("f.realisateurs", "rea")
|
|
|
|
|
+ ->addSelect("rea");
|
|
|
return $qb;
|
|
return $qb;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function findProchaines(): array
|
|
public function findProchaines(): array
|
|
|
{
|
|
{
|
|
|
- $date = new \DateTime('now');
|
|
|
|
|
|
|
+ $date = new \DateTime("now");
|
|
|
$interval = new \DateInterval("P20D");
|
|
$interval = new \DateInterval("P20D");
|
|
|
$interval->invert = 1;
|
|
$interval->invert = 1;
|
|
|
$date->add($interval);
|
|
$date->add($interval);
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
- $qb
|
|
|
|
|
- ->leftJoin('f.authered', 'aut')->addSelect('aut')
|
|
|
|
|
- ->leftJoin('f.genres', 'gen')->addSelect('gen')
|
|
|
|
|
- ->leftJoin('f.realisateurs', 'rea')->addSelect('rea')
|
|
|
|
|
- ->where('f.dateSortie > :date')
|
|
|
|
|
- ->setParameter('date', $date)
|
|
|
|
|
- ->orderBy('f.dateSortie', 'ASC');
|
|
|
|
|
- return $qb
|
|
|
|
|
- ->getQuery()
|
|
|
|
|
- ->getResult();
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
|
|
+ $qb->leftJoin("f.authered", "aut")
|
|
|
|
|
+ ->addSelect("aut")
|
|
|
|
|
+ ->leftJoin("f.genres", "gen")
|
|
|
|
|
+ ->addSelect("gen")
|
|
|
|
|
+ ->leftJoin("f.realisateurs", "rea")
|
|
|
|
|
+ ->addSelect("rea")
|
|
|
|
|
+ ->where("f.dateSortie > :date")
|
|
|
|
|
+ ->setParameter("date", $date)
|
|
|
|
|
+ ->orderBy("f.dateSortie", "ASC");
|
|
|
|
|
+ return $qb->getQuery()->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function findFilmWithExistentTitre(string $titre): array
|
|
public function findFilmWithExistentTitre(string $titre): array
|
|
|
{
|
|
{
|
|
|
- return $this->createQueryBuilder('f')
|
|
|
|
|
- ->leftJoin('f.realisateurs', 'r')->addSelect('r')
|
|
|
|
|
- ->where('f.titre = :titre')
|
|
|
|
|
- ->setParameter('titre', $titre)
|
|
|
|
|
|
|
+ return $this->createQueryBuilder("f")
|
|
|
|
|
+ ->leftJoin("f.realisateurs", "r")
|
|
|
|
|
+ ->addSelect("r")
|
|
|
|
|
+ ->where("f.titre = :titre")
|
|
|
|
|
+ ->setParameter("titre", $titre)
|
|
|
->getQuery()
|
|
->getQuery()
|
|
|
- ->getResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ ->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function findFilmInImdb(Film $film): array
|
|
public function findFilmInImdb(Film $film): array
|
|
|
{
|
|
{
|
|
|
$reals = [];
|
|
$reals = [];
|
|
|
- foreach($film->getRealisateurs() as $real) {
|
|
|
|
|
|
|
+ foreach ($film->getRealisateurs() as $real) {
|
|
|
$reals[] = $real->getNomComplet();
|
|
$reals[] = $real->getNomComplet();
|
|
|
}
|
|
}
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
- $qb
|
|
|
|
|
- ->andWhere('f.titre = :titre')
|
|
|
|
|
- ->setParameter('titre', $film->getTitre())
|
|
|
|
|
- ->innerJoin('f.realisateurs', 'rea')
|
|
|
|
|
- ->andWhere($qb->expr()->in('rea.nomComplet', ':reals'))
|
|
|
|
|
- ->setParameter('reals', $reals)
|
|
|
|
|
- ;
|
|
|
|
|
- return $qb
|
|
|
|
|
- ->getQuery()
|
|
|
|
|
- ->getResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
|
|
+ $qb->andWhere("f.titre = :titre")
|
|
|
|
|
+ ->setParameter("titre", $film->getTitre())
|
|
|
|
|
+ ->innerJoin("f.realisateurs", "rea")
|
|
|
|
|
+ ->andWhere($qb->expr()->in("rea.nomComplet", ":reals"))
|
|
|
|
|
+ ->setParameter("reals", $reals);
|
|
|
|
|
+ return $qb->getQuery()->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function findRandom(int $nb = 5): array
|
|
public function findRandom(int $nb = 5): array
|
|
|
{
|
|
{
|
|
|
- $films = $this->createQueryBuilder('f')
|
|
|
|
|
- ->select('f.id')
|
|
|
|
|
|
|
+ $films = $this->createQueryBuilder("f")
|
|
|
|
|
+ ->select("f.id")
|
|
|
->getQuery()
|
|
->getQuery()
|
|
|
- ->getResult()
|
|
|
|
|
- ;
|
|
|
|
|
- $ids = array_flip(array_map(fn($value): int => $value['id'], $films));
|
|
|
|
|
|
|
+ ->getResult();
|
|
|
|
|
+ $ids = array_flip(array_map(fn($value): int => $value["id"], $films));
|
|
|
|
|
|
|
|
$random = array_rand($ids, $nb);
|
|
$random = array_rand($ids, $nb);
|
|
|
|
|
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
- $qb->andWhere($qb->expr()->in('f.id', $random));
|
|
|
|
|
-
|
|
|
|
|
- return $qb
|
|
|
|
|
- ->getQuery()
|
|
|
|
|
- ->getResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
|
|
+ $qb->andWhere($qb->expr()->in("f.id", $random));
|
|
|
|
|
+
|
|
|
|
|
+ return $qb->getQuery()->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function countAjoutsParMois(): array
|
|
public function countAjoutsParMois(): array
|
|
|
{
|
|
{
|
|
|
- return $this->createQueryBuilder('f')
|
|
|
|
|
- ->select("DATE_FORMAT(f.dateSubmited, '%Y-%m') as month, COUNT(f.id) as entryCount")
|
|
|
|
|
- ->groupBy('month')
|
|
|
|
|
- ->orderBy('month', 'ASC')
|
|
|
|
|
|
|
+ return $this->createQueryBuilder("f")
|
|
|
|
|
+ ->select(
|
|
|
|
|
+ "DATE_FORMAT(f.dateSubmited, '%Y-%m') as month, COUNT(f.id) as entryCount",
|
|
|
|
|
+ )
|
|
|
|
|
+ ->groupBy("month")
|
|
|
|
|
+ ->orderBy("month", "ASC")
|
|
|
->getQuery()
|
|
->getQuery()
|
|
|
- ->getResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ ->getResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function countFilmsVusBy(User $user): int
|
|
public function countFilmsVusBy(User $user): int
|
|
|
{
|
|
{
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
- $qb
|
|
|
|
|
- ->select('COUNT(f.id)')
|
|
|
|
|
- ->leftJoin('f.usersWhoSeen', 'wan')
|
|
|
|
|
- ->andWhere($qb->expr()->in('wan', ':user'))
|
|
|
|
|
- ->setParameter('user', $user)
|
|
|
|
|
- ;
|
|
|
|
|
-
|
|
|
|
|
- return $qb
|
|
|
|
|
- ->getQuery()
|
|
|
|
|
- ->getSingleScalarResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
|
|
+ $qb->select("COUNT(f.id)")
|
|
|
|
|
+ ->leftJoin("f.usersWhoSeen", "wan")
|
|
|
|
|
+ ->andWhere($qb->expr()->in("wan", ":user"))
|
|
|
|
|
+ ->setParameter("user", $user);
|
|
|
|
|
+
|
|
|
|
|
+ return $qb->getQuery()->getSingleScalarResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function countFilmsFavorisBy(User $user): int
|
|
public function countFilmsFavorisBy(User $user): int
|
|
|
{
|
|
{
|
|
|
- $qb = $this->createQueryBuilder('f');
|
|
|
|
|
- $qb
|
|
|
|
|
- ->select('COUNT(f.id)')
|
|
|
|
|
- ->leftJoin('f.usersWantToView', 'wan')
|
|
|
|
|
- ->andWhere($qb->expr()->in('wan', ':user'))
|
|
|
|
|
- ->setParameter('user', $user)
|
|
|
|
|
- ;
|
|
|
|
|
-
|
|
|
|
|
- return $qb
|
|
|
|
|
- ->getQuery()
|
|
|
|
|
- ->getSingleScalarResult()
|
|
|
|
|
- ;
|
|
|
|
|
|
|
+ $qb = $this->createQueryBuilder("f");
|
|
|
|
|
+ $qb->select("COUNT(f.id)")
|
|
|
|
|
+ ->leftJoin("f.usersWantToView", "wan")
|
|
|
|
|
+ ->andWhere($qb->expr()->in("wan", ":user"))
|
|
|
|
|
+ ->setParameter("user", $user);
|
|
|
|
|
+
|
|
|
|
|
+ return $qb->getQuery()->getSingleScalarResult();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function findFirstDateAdded(): ?Film
|
|
public function findFirstDateAdded(): ?Film
|
|
|
{
|
|
{
|
|
|
// Construire une requête pour obtenir la première date d'ajout
|
|
// Construire une requête pour obtenir la première date d'ajout
|
|
|
- return $this->createQueryBuilder('f')
|
|
|
|
|
- ->select('f.dateSubmited')
|
|
|
|
|
- ->orderBy('f.dateSubmited', 'ASC') // Trier par date croissante
|
|
|
|
|
- ->setMaxResults(1) // Limiter à 1 résultat (la première date)
|
|
|
|
|
|
|
+ return $this->createQueryBuilder("f")
|
|
|
|
|
+ ->select("f.dateSubmited")
|
|
|
|
|
+ ->orderBy("f.dateSubmited", "ASC") // Trier par date croissante
|
|
|
|
|
+ ->setMaxResults(1) // Limiter à 1 résultat (la première date)
|
|
|
->getQuery()
|
|
->getQuery()
|
|
|
- ->getOneOrNullResult(); // Récupérer le premier résultat ou null
|
|
|
|
|
|
|
+ ->getOneOrNullResult(); // Récupérer le premier résultat ou null
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|