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 une Entity


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Cloner une Entity
    Hello tous le monde je viens vers vous car je dois intervenir sur une application Symphony 2 et j'ai un peu de mal pour cloner un élément .

    Pour résumer je récupére un élément Form avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_formRepository->getFormById($id)
    et cet élément possé des Entity Page, Page posséde encore d'autre élément etc... et cela en cascade

    J'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $formSelect = $this->_formRepository->getFormById (9);
    $copy = clone $formSelect[0];
    $this->_em->persist($copy);
    $this->_em->flush();
    Mais seulement le Form est cloné dans la base et non les Entity enfant quelqu'un connait une méthode pour faire cela un cascade ou a une piste ?

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    je suis curieux de connaitre la raison du clonage ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $formSelect = $this->_formRepository->getFormById (9);
    $this->_em->persist($$formSelect[0]);
    $this->_em->flush();

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Malheureusement sa ne fonctionne pas : J'ai une erreur comme quoi l'object ne peut être convertie en string.

    Pour ce qui est du besoin c'est une demande de client de pouvoir dupliquer certains éléments

  4. #4
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut Lazy loading
    par defaut doctrine ne charge pas les objets liés mais plutôt il utilise une technique de proxy qui s'en charge de les charger à la demande

    sinon y'a une methode dite magique dans php qui peurrait être utile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function __clone() {}
    dedans tu peux surcharger la logique de clonage de ton objet
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  5. #5
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    et bien la première chose à faire est d'analyser ce que tu récupère de la base pour cela utilise la fonctionne dump

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    $formSelect = $this->_formRepository->getFormById (9);
    dump($formSelect); exit;
    ...

    dupliquer ? j'ai un objet. j'en veux 10, pour quoi faire ? demande dans quel but ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je ne peut pas tous expliquer mais en gros ils générents des éléments par exemple des formulaire
    et il veulent les dupliquer certain son très complexe mais il faut en refaire avec juste un ou deux éléments qui change.

    J'ai essayé de surcharger le clonnage mais je dois modifier tellement d'entité enfant en cascade que j'ai des problèmes de max execution time --"

  7. #7
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    désolé de dire ça mais cloner des objets comme ça c'est tout pourrie et quand c'est tout pourrie au lieu de se borner il vaut mieux réfléchir à une meilleure façon de faire.

    je fais une entiteA et entiteB(avec les changements) qui hérite de entiteBase.
    je fais formAType, et formBType (bien sur avec les changements adéquats) qui hérite de FormBaseType.

    je récupère entiteA de formAType
    je transfert les données de entiteA dans entitéB (en prenant en compte les changements)
    j'associe entiteB a formBType(pour afficher formBtype si besoin)


    comme ça je peux persister les 2 types et même afficher les formulaires dans twig si nécessaire.

  8. #8
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par dukoid Voir le message
    désolé de dire ça mais cloner des objets comme ça c'est tout pourrie et quand c'est tout pourrie au lieu de se borner il vaut mieux réfléchir à une meilleure façon de faire.

    je fais un formType de base, je fais formAType, et formBType qui hérite de FormType. (bien sur avec les changements adéquats)
    je récupère formAType et je transfère les données dans formBType en prenant en compte le changement)

    comme ça je peux persister et même afficher les 2 types de formulaires sans soucis.
    Bonjour dukoid,

    je ne vois à quel niveau l'auteur du poste parlais d'un form Type, c'est une entité récupéré de la base qu'il voulait cloner

    tu peux changer t'a requette de récupération de ton objet pour explicitement charger les entités lié

    comme je t'ai dis les entités liés ne sont pas chargé par defaut par doctrine

    regarde ce lien:

    http://www.doctrine-project.org/2009...y-loading.html

    Ahmed
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  9. #9
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    Je ne peut pas tous expliquer mais en gros ils générents des éléments par exemple des formulaire
    et il veulent les dupliquer certain son très complexe mais il faut en refaire avec juste un ou deux éléments qui change.
    il parle de formulaire donc en Symfony de formType.

    et puis soyons sérieux cloner des objets c'est pourrie ... même si j'ai pas compris sa demande il existe certainement des solutions pour éviter le clonage en utilisant l'héritage par exemple.

  10. #10
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut Cloner une Entity
    Citation Envoyé par dukoid Voir le message
    il parle de formulaire donc en Symfony de formType.
    même si j'ai pas compris sa demande
    moi je l'ai bien compris c'est pour ce la que j'ai répondu

    enfin le titre du sujet est bien "Cloner une Entity"

    sinon El156 regarde ce lien il pourra bien t'aider:

    http://www.doctrine-project.org/2009...y-loading.html
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

Discussions similaires

  1. génération de requete dynamique dans une entitie
    Par osman.amine dans le forum Struts 1
    Réponses: 3
    Dernier message: 12/06/2007, 13h52
  2. Récuperer les vertice d'une Entity
    Par clemsye dans le forum Ogre
    Réponses: 5
    Dernier message: 10/03/2007, 14h30
  3. Cloner une base
    Par Rocou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/03/2007, 19h14
  4. Cloner une image ...
    Par sheik dans le forum 2D
    Réponses: 4
    Dernier message: 16/03/2006, 09h17
  5. [Jonas] Impossible de déployer une Entity Bean CMP2
    Par blockparty dans le forum JOnAS
    Réponses: 2
    Dernier message: 01/12/2005, 15h45

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