Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-04-2014 17:43:56

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Problème lors de la mise à jour de l'entité [Résolu]

Bonjour,

Je sèche complètement sur un problème avec Doctrine2. J'ai mon controller qui possède une action "add" et "edit" (classique) qui, respectivement, ajoute et modifier une entité grâce à un formulaire. Le formulaire est le même pour ces deux actions. Lorsque j'essaie de modifier une entité existante dans l'action "edit", ça ne fonctionne pas (aucun problème pour l’auto-complétion des champs cependant). J'ai vérifié après la validation du formulaire, l'entité est bien modifiée, mais le "persist" et le "flush" ne semble pas fonctionner (je n'ai pourtant aucune erreur affichée). J'ai un autre formulaire qui modifie une autre entité où je m'y prends exactement de la même façon et où ça fonctionne.

D'où est-ce que ça peut venir ?

Dernière modification par Seryus (05-05-2014 11:18:09)

Hors ligne

 

#2 30-04-2014 18:14:18

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Problème lors de la mise à jour de l'entité [Résolu]

Salut, sans voir ton code aucune idée.

Hors ligne

 

#3 05-05-2014 10:35:19

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: Problème lors de la mise à jour de l'entité [Résolu]

Le code de mon entité (sans les getters/setters) :

Code:

[lang=php]
/**
 * Question
 *
 * @ORM\Table(name="question", indexes={@ORM\Index(name="fk_question_level", columns={"level_id"})})
 * @ORM\Entity(repositoryClass="Application\Model\Repository\Question")
 */
class Question
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="label", type="string", length=5000, nullable=false)
     */
    protected $label;
    
    /**
     * @var boolean
     *
     * @ORM\Column(name="is_open", type="boolean", nullable=false)
     */
    protected $isOpen;

    /**
     * @var \Application\Model\Entity\Level
     *
     * @ORM\ManyToOne(targetEntity="Application\Model\Entity\Level", inversedBy="questions")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="level_id", referencedColumnName="id")
     * })
     */
    protected $level;
    
    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\OneToMany(targetEntity="Application\Model\Entity\Answer", mappedBy="question", cascade={"persist", "remove"}, orphanRemoval=true)
     */
    protected $answers;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->answers = new \Doctrine\Common\Collections\ArrayCollection();
    }
}

Mon action "edit", après validation du formulaire :

Code:

[lang=php]
if($form->isValid()) {
    $data = $form->getData();
    var_dump($data); //Me retourne bien mon objet entité modifié
    $entityManager->persist($data);
    $entityManager->flush();
}

Petite spécificité : "answers" est une classe "parente". Selon ce qu'il y a dans "isOpen" de question, le type de réponse contenu dans "answers" changera (ce sera soit "CloseAnswer", soit "OpenAnswer" qui héritent tout deux de "Answer").

Hors ligne

 

#4 05-05-2014 11:17:41

Seryus
Membre
Date d'inscription: 17-02-2012
Messages: 128

Re: Problème lors de la mise à jour de l'entité [Résolu]

Bon c'était une erreur bête de ma part encore une fois. Je viens de remarqué que, au lieu d'être modifié dans la base de données, mes entités sont ajoutées comme de nouveaux enregistrements. L'erreur était : oubli d'un bind de l'entité existante au formulaire avant la modification.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages