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

PHP & Base de données Discussion :

[Doctrine] Symfony2 + Doctrine : La propriété DateTime est mise à jour même lorsque inchangée


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Doctrine] Symfony2 + Doctrine : La propriété DateTime est mise à jour même lorsque inchangée
    Bonjour,

    J'ai une entité "Transaction" qui a une propriété "date". Lorsque je récupère les données d'un formulaire et que je met à jour l'entité sur la base de données, et que je vérifie les transactions qui ont été mise à jour, je réalise que Doctrine met à jour toutes les entités Transaction, et cela même si la propriété "date" est restée inchangée.

    Sur le site de Doctrine, j'ai vu que les propriétés de type Objet ou DateTime sont mise à jour par référence. Mais je n'arrive pas à comprendre pourquoi ces propriétés sont mise à jour. Peut-être est-ce lorsque la propriété DateTime est convertie d'un String à DateTime, alors la référence change.. Je ne sais pas.

    J'hésite à modifier le champ "date" pas des champs "année", "mois" et "jour" afin de contourner. Y a-t-il moyen de contourner ?

    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Réponse
    La solution est de modifier les getter / setters du champ "date" afin de vérifier si la date existante est différente de la nouvelle date. Seulement si la date est différente alors il est nécessaire de réassigner le nouvel objet date, et doctrine mettra à jour cette propriété sur la base de données. Si l'objet date n'est pas changé, alors la mise à jour n'aura pas lieu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function setDate($date)
        {
     
            if (is_null($this->date))
                $this->date = $date;
            if ($date instanceof \DateTime && $date->getTimestamp() != $this->getDate()->getTimestamp()) {
                $this->date = $date;
            }
     
            return $this;
        }

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2017, 16h00
  2. Mise à jour des données du CR lorsque la DB est mise à jour
    Par j0hn01 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/02/2009, 14h33
  3. Envoi email des qu'une page internet est mise à jour
    Par mamok dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/09/2007, 10h52
  4. Affichage de texte est mise à jour de l'écran
    Par Galdor_sp dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/03/2004, 22h31

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