Doctrine ne détecte pas les modifications dans un champ date
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 :
Code:
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;
}
// ...
} |
La commande est très simple :
Code:
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();
}
} |
Le code métier est donc dans le helper :
Code:
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 laisse le code tel quel mes inscriptions ne sont pas modifiés.
Si je décommente la ligne "//$inscription->setState('FOO');" alors les attributs state ET flag1H seront modifiés !
Merci pour votre aide....