IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Ajouter des minutes à une date dans une fixture ne marche pas !


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 129
    Par défaut Ajouter des minutes à une date dans une fixture ne marche pas !
    Bonjour à tous,

    Je tente en vain de rajouter des minutes à une date de départ (voir code ci-dessous) dans ma fixture, or, la date de fin enregistrée en base résulte être la même que la date de départ inexplicablement peu importe quelle fonction d'ajout de minutes j'utilise...

    Il doit y avoir quelque chose que j'oublie ou une méthode à implémenter pour que l'ajout ait lieu ?

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <?php
     
    namespace App\DataFixtures;
     
    use App\Entity\RendezVous;
    use DateInterval;
    use Doctrine\Bundle\FixturesBundle\Fixture;
    use Doctrine\Common\DataFixtures\DependentFixtureInterface;
    use Doctrine\Persistence\ObjectManager;
    use Faker;
     
    class RdvFixtures extends Fixture implements DependentFixtureInterface
    {
     
        public function load(ObjectManager $manager): void
        {
            $faker = Faker\Factory::create('fr_FR');
     
            for ($i = 0; $i < 100; $i++) {
                $rdv = new RendezVous();
     
                $horaireDebut = $faker->dateTimeThisDecade();
                $interval = $faker->randomElement(['30','60','90','120','150','180','210','240','270','300']);
     
                $horaireFin = $horaireDebut->add(new DateInterval('PT'.$interval.'M'));            
     
                $rdv
                    ->setHoraireDebut($horaireDebut)
                    ->setHoraireFin($horaireFin)
                    ->setEtatRdv('Généré')
                    ->setContact($this->getReference('contact_num_' . random_int(0, 99)))
                    ->setTitreRdv('Titre de rdv n° '.$i)
                    ->setLieuRdv($faker->address())
                    ;       
     
                $manager->persist($rdv);
            }
            $manager->flush();
        }
     
        public function getDependencies()
        {
            return [ContactsFixtures::class, IntervenantsFixtures::class];
        }
    }

  2. #2
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 435
    Par défaut
    Bonjour,

    La méthode $faker->dateTimeThisDecade() retourne un objet DateTime.
    L'utilisation de la méthode add sur un objet DateTime va modifier cet objet, utilise plutôt un objet DateTimeImmutable pour ne pas modifier la date de début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $horaireDebut = $faker->dateTimeThisDecade();
    $horaireDebut = DateTimeImmutable::createFromMutable($horaireDebut);
     
    $interval = $faker->randomElement(['30','60','90','120','150','180','210','240','270','300']);
     
    $horaireFin = $horaireDebut->add(new DateInterval('PT'.$interval.'M'));

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 129
    Par défaut
    Merci Pytet pour cette réponse

    Je ne connaissais pas la méthode createFromMutable, je vais approfondir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/05/2020, 19h48
  2. [11g] Ajout des minutes à une date
    Par fetano dans le forum PL/SQL
    Réponses: 3
    Dernier message: 22/07/2014, 04h28
  3. Ajouter des jours à une date dans une requête HQL
    Par jojo el merou dans le forum Hibernate
    Réponses: 3
    Dernier message: 30/11/2007, 14h37
  4. ajouter des jours à une date
    Par babalastar dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 27/02/2007, 11h39
  5. [HQL] Ajouter des jours à une date
    Par loulou dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/01/2007, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo