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

Doctrine2 PHP Discussion :

doctrine ne flush pas tous mes objets


Sujet :

Doctrine2 PHP

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut doctrine ne flush pas tous mes objets
    Bonjour,

    Je rencontre un souci "bizarre" dans la façon dont doctrine flush mes objets avec symfony2.
    Voici mes objets :
    User => le user
    ProfileUser1 => son profile (1 par année)
    ProfileUserP => son profile détaillé
    ProfileSiteSSH => le profile du site sur lequel il travaille (1 par année)
    SiteH => les détails du site sur lequel il travaille
    LinkSiteProfile => le lien entre le site et le profile du site

    Avec les relations suivantes :
    User oneToMany ProfileUser1
    ProfileUser1 oneToOne ProfileUserP
    ProfileUser1 oneToOne ProfileSiteSSH
    LinkSiteProfile manyToOne ProfileSiteSSH
    LinkSiteProfile manyToOne SiteH
    ProfileSiteSSH manyToOne LinkSiteProfile mais sur une autre champ

    Mon souci est le suivant : je crée mes différents objets et à la fin je fais un persist() sur chaque objet puis un flush() final. Au premier coup il me fait un erreur car il ne flush pas tout mes objets.
    en débug voila ce qu'il fait:
    [2015-07-29 09:42:33] doctrine.DEBUG: INSERT INTO User...
    [2015-07-29 09:42:33] doctrine.DEBUG: INSERT INTO ProfileUser1...
    [2015-07-29 09:42:33] doctrine.DEBUG: INSERT INTO ProfileUserP...
    [2015-07-29 09:42:33] doctrine.DEBUG: INSERT INTO SiteH...
    [2015-07-29 09:42:33] doctrine.DEBUG: INSERT INTO LinkSiteProfile...
    [2015-07-29 09:42:33] doctrine.DEBUG: "ROLLBACK" [] []
    Et donc Integrity Constraint Exception car il n'a pas flushé le ProfileSiteSSH alors que l'objet LinkSiteProfile en a besoin.

    Je fais un "back" et je relance et là il me le fait bien : il crée tout mes objets et ensuite fait un UPDATE pour mettre à jour
    [2015-07-29 09:44:08] doctrine.DEBUG: INSERT INTO SiteH...
    [2015-07-29 09:44:08] doctrine.DEBUG: INSERT INTO User...
    [2015-07-29 09:44:08] doctrine.DEBUG: INSERT INTO ProfileUser1...
    [2015-07-29 09:44:08] doctrine.DEBUG: INSERT INTO ProfileSiteSSH...
    [2015-07-29 09:44:08] doctrine.DEBUG: INSERT INTO LinkSiteProfile...
    [2015-07-29 09:44:08] doctrine.DEBUG: INSERT INTO ProfileUserP...
    [2015-07-29 09:44:08] doctrine.DEBUG: UPDATE ProfileSiteSSH...
    [2015-07-29 09:44:08] doctrine.DEBUG: "COMMIT" [] []

    Bref je ne comprends rien !
    Si vous avez une idée ?
    Merci.
    Jérôme

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Il y a quand même un truc super bizarre...
    Mes entités sont crées à partir d'un fichier excel que j'upload dans mon appli.
    Je clique sur "import" et là il plante dès la première ligne dans mon excel car il oublie de flusher le ProfileSite
    Je retourne sur ma page, je re-sélectionne mon fichier et je fais "import" et là il créé correctement mes entités en arcourant les 15 lignes de mon excel...
    entre temps je ne fais rien de plus, le fichier excel ne bouge pas, le code php non plus, le cache symfony j'y touche pas... bref, super bizarre
    Jérôme

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Tu dois pour pouvoir ajouter un objet que tous les objets référencés existent, donc tu ne pourras pas faire tout en un seul flush selon moi.
    Déjà, il faudrait se débrouiller pour que les dépendances soient crées avant l'objet qui a des contraintes dessus.

    Si tu as des contraintes circulaires, il faut regarder comment faire, je ne sais pas pour ma part.
    Si tu veux garder une intégritée générale, tu peux aussi passer en mode transaction manuelle... avec un commit à la fin et plein de flush entre temps.

Discussions similaires

  1. Propriétés communes à tous mes objets
    Par CaptainChoc dans le forum Entity Framework
    Réponses: 4
    Dernier message: 19/10/2011, 18h32
  2. [OL-2007] Je ne retrouve pas tous mes contacts lorsque j'écris un mail
    Par Titi41 dans le forum Outlook
    Réponses: 0
    Dernier message: 21/09/2011, 10h06
  3. [Doctrine] Doctrine_Core::loadData() ne charge pas tous mes fichiers
    Par ed_le_sec dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/09/2010, 18h12
  4. [MySQL] select * ne select pas tous mes tuples
    Par g.nowar dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/06/2009, 11h25
  5. Oracle n'utilise pas tous mes CPUS
    Par noumayoss dans le forum Oracle
    Réponses: 3
    Dernier message: 12/04/2006, 09h17

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