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

Symfony PHP Discussion :

Cloner un objet pour récupérer ses attributs et toutes ses relations


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 129
    Points : 88
    Points
    88
    Par défaut Cloner un objet pour récupérer ses attributs et toutes ses relations
    J'ai une liste de pièces qui sont contrôlés avec des équipements.

    Dans cette liste, je peux éditer la fiche d'une pièce où je peut voir les infos sur la pièce et tous les équipements utilisés qui ont été utilisés pour le contrôle de la pièce.

    Je souhaite pouvoir dupliquer mon objet pièce avec toutes ces relations, modifier la référence avec un form et que le nouvel objet s'enregistre avec un nouvel id et les infos de la pièce que j'ai édité.


    Voici le script
    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
     
    if ($request->isMethod('POST')) {
                if ($pieceForm->isValid()) {
     
                    $data = $pieceForm->getData();
                    $ref = $data['ref'];
     
                    $em = $this->getDoctrine()->getManager();
                    $pieceRepository = $em->getRepository('PieceBundle:Fiche');
                    $fiche = $pieceRepository->find($piece->getId());
                    $fiche->setId(null);
                    $fiche->setReference($ref);
                    $newFiche = clone $fiche;
     
                    $em->persist($newFiche);
                    $em->flush();
     
            }
    Avec la méthode clone,je souhaite récupérer les attributs de l'objet tout en settant certains. J'ai mis l'id à null afin qu'un autre id au moment du flush puisse être adjoint.
    J'ai voulu utiliser la méthode copy de doctrine mais j'ai toujours l'erreur not implemented.
    Pour ce qui est du formulaire et de la récupération, de la référence, cependant c'est au moment de l'enregistrement que ça coince.
    Si quelqu'un a dû cloner les attributs d'un objet tt en modifiant l'id,je suis preneur.
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Tu n'as pas besoin de clone pour cela.
    Le problème est que tu es dans la logique cognitive que tu aurais si tu faisais les choses à la main ou dans un tableur. En l'occurrence, dupliquer, cela ne signifie pas cloner un objet puis changer son id mais créer un nouvel objet et l'hydrater avec les attributs souhaités. Créé donc formulaire avec les valeurs que tu ne souhaites pas modifier pré-remplies et des champs vides là où il y a des modifications à faire; et laisse doctrine gérer les problèmes d'id.

    Bonne journée.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    Si quelqu'un a dû cloner les attributs d'un objet tt en modifiant l'id,je suis preneur.
    Regardes la doc de doctrine

    http://docs.doctrine-project.org/en/...-or-clone.html

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 129
    Points : 88
    Points
    88
    Par défaut
    Ok,j'ai compris.
    Juste une question par rapport au type arrayCollection.
    Pour récupérer les valeurs du champ , je n'ai qu'a utiliser juste le getter ou faire un foreach au préalable pour récupérer toutes les valeurs.
    Exemple : getAdresse correspond au type arrayCollection,donc plusieurs adresses.
    Pour récupérer, je n'ai qu'a faire setAdresseClient (getAdresse) ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/12/2011, 04h50
  2. Récupérer l'attribut d'un objet à partir d'une servlet
    Par Road.Runner dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 21/06/2009, 19h13
  3. afficher ses attributs (caractéristiques) pour chaque article
    Par loic20h28 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/02/2009, 16h41
  4. [Dojo] Récupérer un objet pour modifier ses attributs
    Par vermine dans le forum Bibliothèques & Frameworks
    Réponses: 14
    Dernier message: 03/02/2009, 11h53
  5. [POO] cloner un objet (et tous ses sous objets ?)
    Par Merfolk dans le forum Langage
    Réponses: 11
    Dernier message: 05/05/2008, 16h23

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