Laravel 5

Comment bien gérer les dates et les heures?

  • Avatar de Soufiane1
    Membre depuis :
    09/03/2019
    Messages :
    19

    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.

  • Avatar de Dom
    Membre depuis :
    17/07/2017
    Messages :
    36

    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

  • Avatar de Soufiane1
    Membre depuis :
    09/03/2019
    Messages :
    19

    Bonjour,

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

  • Avatar de Dom
    Membre depuis :
    17/07/2017
    Messages :
    36

    Comment ca supprimer tes variables ?

  • Avatar de KYoann
    Membre depuis :
    11/02/2019
    Messages :
    37

    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')

Vous ne pouvez pas répondre à ce sujet.