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 :

Mettre à jours plusieurs entitées avant un persist()


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut Mettre à jours plusieurs entitées avant un persist()
    Bonjour bonjour,

    J'ai passé pas mal de temps à chercher des solutions propres pour mon problème et je n'en ai pas trouvées.
    Bien sûr j'ai en tête des solutions qui pourraient marcher mais qui ne me semblent pas optimales alors je comptes sur des pros de Doctrine2 pour m'aider !

    Situation :

    J'ai 2 entitées (une User et une Contacts)

    • un User peut contenir plusieurs contacts.
    • L'entité (la table) Contacts contient un champ mainContact qui permet de définir si le contact est le contact principal du user ou pas.
    • Un seul des contacts ne doit avoir le champ mainContact à 1


    Problème :

    Je souhaite qu'au moment de persister un contact :

    • si celui-ci est en mainContact=1, tous les autres contacts liés à l'utilisateur soient passés automatiquement en mainContact=0
    • Si celui-ci est en mainContact=0, il faut vérifier qu'il y a déjà un autre contact avec mainContact=1, sinon on le met automatiquement en mainContact=1.


    Solutions envisagées et qui ne semblent pas propres

    • Créer une méthode dans le repository qui va mettre à jour tous les autres enregistrements et renvoyé la valeur de mainContact à mettre dans le contact courant
    • -> Cette solution obligerait à lancer la méthode à chaque fois qu'on persiste un contact, partout dans l'application.
    • Utiliser prepersist et y récupérer l'entitymanager pour faire les traitements
    • -> Cette méthode est déconseillée, l'entité ne devrait jamais accéder à l'entitymanager directement



    Donc, je n'arrive pas à trouver sur le site de Doctrine de méthode claire pour palier à cette situation. Si d'aventure quelqu'un a déjà eu à faire à ce genre de problèmes et qu'il a trouvé une solution parfaite ce serait cool de m'en faire part !! Vous aurez ma gratitude eternelle

    Merci à tous et bonne nuit les insomniaques

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    Résolu !

    J'ai posté ma question sur stackoverflow et j'ai eu la réponse au problème.

    Je post ici la solution si un jour quelqu'un a besoin d'une réponse équivalante :
    http://stackoverflow.com/questions/1...40475#11540475

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/03/2007, 01h20
  2. mettre à jour plusieurs tables avec un formulaire
    Par kangourou_agile dans le forum Access
    Réponses: 6
    Dernier message: 07/08/2006, 15h33
  3. Réponses: 7
    Dernier message: 12/07/2006, 17h34
  4. Procédure mettre à jour plusieurs lignes
    Par JEFF56 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/05/2006, 10h53
  5. Réponses: 3
    Dernier message: 09/07/2004, 10h23

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