Décrivez ici votre problème ou ce que vous cherchez à faire.
Bonjour à tous,
Je cherche à filtrer un créneau horaire grâce au code suivant sur une table contenant des données en mode tabulaire.
"" ->andWhere(':heuredepartmidi <= :heureclient and :heurefinmidi >= :heureclient') ""
or il me renvoie un tableau vide...
Si je fais (':heuredepartmidi >= :heureclient') par contre ça me ramène bien un tableau avec les informations correctes...
Doit on appliquer un format spécial aux champs Time pour qu'ils soient correctement interprétés ?
J'ai essayé de toutes les manières en mettant des new \datetime() mais ça n'a pas l'air d'être compatible avec les champs Time déclarés dans la base !
Cela oblige t'il à transformer les champs horaires de la table en Datetime au lieu de time ?
Merci d'avance pour vos réponses.
"```"
public function checkerExistenceCreneau(string $dateClient, string $heureClient)
{
//$heureClient = new \DateTime($heureClient);
//$dateClient = new \DateTime($dateClient);
//Rechercher si la date choisie par le client est comprise dans un possible intervalle de créneaux
//et récupérer l'id du créneau
$q1 = $this->createQueryBuilder('d')
->setParameter('val', $dateClient)
->where('d.date_debut <= :val AND d.date_fin >= :val')
->getQuery()
->getOneOrNullResult();
//Si résultat de requête $q1 non vide alors :
if ($q1 != null) {
//Récupération de la ligne de la table dans laquelle se trouve le créneau actif
$idCreneau = $q1->getId();
//Recherche du numéro de jour de la semaine correspondant à la date entrée par le client:
$jour = date("N", strtotime($dateClient));
//Rapatriement de tous les créneaux correspondants au jour choisi
//Recherche linéaire dans la table tabulaire des créneaux pour récupérer les intervalles d'horaires et nombre de couverts
switch ($jour) {
case 1:
$colHeureDepartMidi = "c.lundi_midi_debut";
$colHeureFinMidi = "c.lundi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_lundi_midi";
$colHeureDepartSoir = "c.lundi_soir_debut";
$colHeureFinSoir = "c.lundi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_lundi_soir";
break;
case 2:
$colHeureDepartMidi = "c.mardi_midi_debut";
$colHeureFinMidi = "c.mardi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_mardi_midi";
$colHeureDepartSoir = "c.mardi_soir_debut";
$colHeureFinSoir = "c.mardi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_mardi_soir";
break;
case 3:
$colHeureDepartMidi = "c.mercredi_midi_debut";
$colHeureFinMidi = "c.mercredi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_mercredi_midi";
$colHeureDepartSoir = "c.mercredi_soir_debut";
$colHeureFinSoir = "c.mercredi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_mercredi_soir";
break;
case 4:
$colHeureDepartMidi = "c.jeudi_midi_debut";
$colHeureFinMidi = "c.jeudi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_jeudi_midi";
$colHeureDepartSoir = "c.jeudi_soir_debut";
$colHeureFinSoir = "c.jeudi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_jeudi_soir";
break;
case 5:
$colHeureDepartMidi = "c.vendredi_midi_debut";
$colHeureFinMidi = "c.vendredi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_vendredi_midi";
$colHeureDepartSoir = "c.vendredi_soir_debut";
$colHeureFinSoir = "c.vendredi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_vendredi_soir";
break;
case 6:
$colHeureDepartMidi = "c.samedi_midi_debut";
$colHeureFinMidi = "c.samedi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_samedi_midi";
$colHeureDepartSoir = "c.samedi_soir_debut";
$colHeureFinSoir = "c.samedi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_samedi_soir";
break;
case 7:
$colHeureDepartMidi = "c.dimanche_midi_debut";
$colHeureFinMidi = "c.dimanche_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_dimanche_midi";
$colHeureDepartSoir = "c.dimanche_soir_debut";
$colHeureFinSoir = "c.dimanche_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_dimanche_soir";
break;
default:
return;
}
//Requête qui rapatrie les créneaux et nbr de couverts pour le jour et heure choisis :
$heureClient=new \DateTime($heureClient);
$q2 = $this->createQueryBuilder('c')
->select($colHeureDepartMidi, $colHeureFinMidi, $colHeureDepartSoir, $colHeureFinSoir, $colNbrCouvertsMidi, $colNbrCouvertsSoir)
->setParameters([
'idcreneau' => $idCreneau,
'heureclient'=>$heureClient,
'heuredepartmidi'=> $colHeureDepartMidi,
// 'heurefinmidi'=> $colHeureFinMidi,
// 'nbrcouvertsmidi'=> $colNbrCouvertsMidi,
// 'heuredepartsoir'=> $colHeureDepartSoir,
// 'heurefinsoir'=> $colHeureFinSoir,
// 'nbrcouvertssoir'=> $colNbrCouvertsSoir,
])
->andWhere(':heureclient <= :heuredepartmidi')
// ->orWhere(':heureclient >= :heuredepartsoir and :heureclient <= :heurefinsoir')
->andWhere('c.id = :idcreneau')
->getQuery()
->getResult();
echo ('idCreneau =' . $idCreneau);
dd($q2);
echo ('Des résultats ont été trouvés'), die;
return $q1;
return $q2;
} else {
echo ("Aucun créneau libre de réservation n'a été trouvé, veuillez choisir un autre jour ou consulter la liste des créneaux disponibles en cliquant sur le link qui s'affiche en bas de ce formulaire.");
}
}
}
"```"
Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)
**Ce que je veux**
Décrivez ce que vous cherchez à obtenir.
**Ce que j'obtiens**
Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(