Bonjour à tous.
J'ai un petit problème avec une entité qui refuse de se mettre à jours.
On gère ici des inscriptions à des formations.
Une tache planifiée est chargée d'envoyer un mail de rappel une heure avant le début de la formation.
On enregistre la date de l'envoie de ce mail dans l'inscription pour éviter de notifier plusieurs fois l'utilisateur.
Voici mon entité Inscription :
La commande est très simple :
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 namespace My\AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table() * @ORM\Entity(repositoryClass="Pileje\AppBundle\Repository\ParticipantTrainingLocationRepository") */ class Inscription { /** * @var integer * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @var string * @ORM\Column(type="string", length=20) */ protected $state; /** * @var \DateTime * @ORM\Column(type="datetime", nullable=true)) */ protected $flag1H = null; // ... /** * @param \DateTime $flag1H */ public function setFlag1H(\DateTime $flag1H) { $this->flag1H = $flag1H; return $this; } // ... }
Le code métier est donc dans le helper :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class SendMailRemindOnlineSessionsCommand extends ContainerAwareCommand { protected function execute(InputInterface $input, OutputInterface $output) { $this->getContainer()->get('my.app.helper.RemindHelper')->processAll(); } }
Si je laisse le code tel quel mes inscriptions ne sont pas modifiés.
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 namespace My\AppBundle\Helper; class RemindHelper { /** * @var EntityManager */ protected $entityManager; /** * @var InscriptionRepository */ protected $inscriptionRepository; public function processAll() { /** @var Inscription[] $list */ $list = $this->inscriptionRepository->findInscriptionsWithFlag1HNULL(); foreach ($list as $i => $inscription) { $inscription->setFlag1H(new \DateTime()); //$inscription->setState('FOO'); } $this->entityManager->flush(); } }
Si je décommente la ligne "//$inscription->setState('FOO');" alors les attributs state ET flag1H seront modifiés !
Merci pour votre aide....
Partager