27 $sql =
"SELECT * FROM battle";
28 $pdoStatement = $this->pdo->prepare($sql);
29 $pdoStatement->execute();
30 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
31 $tableau = $pdoStatement->fetchAll();
43 $sql =
"SELECT * FROM battle WHERE idBattle = :id";
44 $pdoStatement = $this->pdo->prepare($sql);
45 $pdoStatement->execute(array(
49 $pdoStatement->setFetchMode(PDO::FETCH_ASSOC);
50 $tableau = $pdoStatement->fetch();
51 $battle = $this->
hydrate($tableau);
64 $battle->setIdBattle(isset($data[
'idBattle']) ? (
int)$data[
'idBattle'] :
null);
65 $battle->setTitreBattle($data[
'titreBattle'] ??
null);
68 $battle->setDateDebutBattle(
69 !empty($data[
'dateDebutBattle']) ?
new DateTime($data[
'dateDebutBattle']) : null
72 $battle->setDateFinBattle(
73 !empty($data[
'dateFinBattle']) ?
new DateTime($data[
'dateFinBattle']) : null
77 if (!empty($data[
'statutBattle'])) {
78 $battle->setStatutBattle(StatutBattle::from($data[
'statutBattle']));
81 $battle->setEmailCreateurBattle($data[
'emailCreateurBattle'] ??
null);
82 $battle->setEmailParticipantBattle($data[
'emailParticipantBattle'] ??
null);
95 foreach ($rows as $row) {
96 $battles[] = $this->
hydrate($row);
127 $sql =
"SELECT COUNT(*) as wins FROM (
130 b.emailCreateurBattle,
131 b.emailParticipantBattle,
132 COALESCE(SUM(CASE WHEN v.emailVotee = b.emailCreateurBattle THEN 1 ELSE 0 END), 0) as votes_createur,
133 COALESCE(SUM(CASE WHEN v.emailVotee = b.emailParticipantBattle THEN 1 ELSE 0 END), 0) as votes_participant
135 LEFT JOIN vote v ON b.idBattle = v.idBattle
136 WHERE b.statutBattle = 'terminee'
137 AND (b.emailCreateurBattle = :email1 OR b.emailParticipantBattle = :email2)
138 GROUP BY b.idBattle, b.emailCreateurBattle, b.emailParticipantBattle
141 (emailCreateurBattle = :email3 AND votes_createur > votes_participant)
142 OR (emailParticipantBattle = :email4 AND votes_participant > votes_createur)";
144 $stmt = $this->pdo->prepare($sql);
146 ':email1' => $emailArtiste,
147 ':email2' => $emailArtiste,
148 ':email3' => $emailArtiste,
149 ':email4' => $emailArtiste
151 return (
int)$stmt->fetchColumn();
countBattlesWon(string $emailArtiste)
Compte le nombre de battles gagnées par un artiste Une battle est gagnée si l'artiste a reçu plus de ...
hydrate(array $data)
Hydrate une battle à partir d'un tableau associatif.
findAll()
Récupère toutes les battles de la base de données.
setPdo(?PDO $pdo)
Setter pour la pdo.
find(int $id)
Récupère une battle par son identifiant.
__construct(?PDO $pdo=null)
Constructeur de la classe BattleDAO.
getPdo()
Getter pour la pdo.
hydrateMany(array $rows)
Hydrate plusieurs battles à partir d'un tableau de tableaux associatifs.
Classe représentant une battle musicale.