Laravel 5

Comment bien gérer les dates et les heures?

Avatar de Soufiane1
Soufiane1

Bonsoir,

Je suis confronté à un soucis que je ne parviens pas à résoudre seul.

Admettons que j'ai un formulaire qui est appelé Training et que j'encode des enregistrements.

date training : 15/09/2019 | hour_start : 18:00 | hour_end : 20:00 | motorbike : 000001

Mon problème est que si j'ai une moto qui est en révision je ne sais pas faire de vérification...

Ici, on a la moto en révision du 01 septembre au 15 septembre 2019.

Donc, si dans mon formulaire Training j'encode un entrainement, normalement, ça doit bloquer parce que la moto est en révision mais là, l'enregistrement s'ajoute.

la date training : 15/09/2019 | hour_start : 08:00 | hour_end : 10:00 | motorbike : 000001

       $date_seance = Carbon::parse($request->get('date_seance'))->format('Y-m-d');
       $hour_start = $request->get('hour_start'); 
       $hour_end = $request->get('hour_end'); 
       $fk_motorbike = $request->get('fk_motorbike');
       $fk_student = $request->get('fk_student');
       $fk_former = $request->get('fk_former');
       $fk_typeseance = $request->get('fk_typeseance');

       
      $conflictTraining1 = Training::where('fk_motorbike', $request->get('fk_motorbike')) 
       ->whereDate('date_seance', "=" , Carbon::parse($date_seance)) 
       ->where('hour_start', "<=" , $request->get('hour_start')) 
       ->where('hour_end', ">=" , $request->get('hour_end'))
       ->where('fk_former', $request->get('fk_former'))
       ->first();

      $conflictRevision = Revision::where('fk_motorbike', $fk_motorbike)
       ->whereDate('date_revision_start', "<=" ,  Carbon::parse($date_seance)) 
       ->where('hour_start', "<=" , $request->get('hour_start')) 
       ->where('hour_end', ">=" , $request->get('hour_end'))
       ->whereDate('date_revision_end', "<=" ,  Carbon::parse($date_seance))
       ->first();

Avez-vous une idée du comment je pourrais gérer mes dates et mes heures? Pour information, j'utilise un time pour mes heures de débuts et de fins, je ne sais pas si c'est exacte?

Merci pour votre aide.

Posté il y a 4 mois
Avatar de Dom
Dom

Salut,

tu ne devrais avoir que deux champs dans ta table Revision start_at et end_at et les mettre en datetime et dans training tu devrais avoir deux dates start_at et end_at . Cela te permettra de calculer ton intersection

Posté il y a 4 mois
Avatar de Soufiane1
Soufiane1

Bonjour,

Ah! Ok, merci et donc je supprime mes variables pour les dates?

Posté il y a 4 mois
Avatar de Dom
Dom

Comment ca supprimer tes variables ?

Posté il y a 4 mois
Avatar de KYoann
KYoann

n'oublie pas de déclarer tes champs debut et fin en tant que date dans la définition de ton model correspondant. Comme cela, ses deux variable seront directement utilisable avec carbon, ce qui devrait faciliter les comparaison ainsi que l'affichage des dates dans tes vues.


class MaClass extends Model
{

    protected $dates = ['start_at','end_at'];
 
 }

Dans tes vues

$macollection->start_at->format('d-m-Y')
$macollection->end_at->format('d-m-Y')
Posté il y a 4 mois

Vous ne pouvez pas répondre à ce sujet.