*bump* I'm still stuck here :-(

On 4 jun, 11:21, Ruben de Vries <rubensay...@gmail.com> wrote:
> cascade persist works like a charm (check out my '>> this does work'
> example) when called stand alone, but it just doesn't work when going
> through the form.
> because it seems the form API doesn't use the get/set methods to set
> the properties o.O?
>
> On May 31, 7:20 pm, Stephan Petzl <stephan.pe...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Without knowing whethercascade:persistshould do the job, i guess it
> > could be an issue with owning and inverse side of your relation.[1]> "The 
> > owning side of a relationship determines the updates to the relationship in 
> > the database."
>
> > The owning side is your comment (since it is the one with the
> > inversedBy property), so maybe you should try to save it this way:
>
> > $comment->setAuthor($user);
>
> > and then look whether it gets persisted.
> > what i would love to know myself is, how the symfony form framework
> > handles bidirectional relations like that...
>
> > [1]http://www.doctrine-project.org/docs/orm/2.0/en/reference/association...
>
> > BR Stephan
>
> > On May 28, 6:54 pm, Ruben de Vries <rubensay...@gmail.com> wrote:
>
> > > I've been going at this problem for hours now so I figured I better
> > > just ask for help to avoid my head exploding soon ...
>
> > > I'll paste some snippets and then try to explain.
>
> > > >> yaml mapping for doctrime ORM
>
> > > GoGreat\DemoBundle\Entity\DemoUser:
> > >   oneToMany:
> > >     comments:
> > >       targetEntity: DemoComment
> > >       mappedBy: author
> > >      cascade: ["persist"]
>
> > > GoGreat\DemoBundle\Entity\DemoComment:
> > >   manyToOne:
> > >     author:
> > >       targetEntity: DemoUser
> > >       inversedBy: comments
>
> > > >> DemoUser entity
>
> > > class GoGreat\DemoBundle\Entity\DemoUser {
>
> > >     public function addComments($comments)
> > >     {
> > >         $comments->setAuthor($this);
> > >         $this->comments[] = $comments;
> > >     }
>
> > > }
> > > >> DemoUserType form
>
> > > class GoGreat\DemoBundle\Form\DemoUserType {
> > >         public function buildForm(FormBuilder $builder, array $options)
> > >         {
> > >                 $builder->add('name', 'text');
> > >                 $builder->add('comments', 'entity', array(
> > >                         'class'         => 
> > > 'GoGreat\DemoBundle\Entity\DemoComment',
> > >                         'property'              => 'body',
> > >                         'expanded'              => true,
> > >                         'multiple'              => true,
> > >                 ));
> > >         }
>
> > > }
> > > >> this does work
>
> > > $user           = new DemoUser();
> > > $comment                = new DemoComment();
>
> > > $user->addComments($comment);
>
> > > $em->persist($user);
> > > $em->flush();
>
> > > >> this doesn't work
>
> > > $form           = $this->get('form.factory')->create(new DemoUserType());
> > > $request                = $this->get('request');
> > > $user           = new DemoUser();
> > > $em                     = $this->get('doctrine.orm.entity_manager');
>
> > > $form->setData($user);
>
> > > if ($request->getMethod() == 'POST') {
> > >         $form->bindRequest($request);
> > >         if ($form->isValid()) {
>
> > >                 foreach ($user->getComments() as $comment) {
> > >                         var_dump($comment->getBody(), 
> > > $comment->getAuthor());
> > >                 }
>
> > >                 $em->persist($user);
> > >                 $em->flush();
> > >         }
>
> > > }
>
> > > the var_dump just before thepersistdoes throw out the body, but it
> > > doesn't have an author.
> > > I think the form isn't using DemoUser->addComments to set the
> > > comments, but how else could it set the comments?
>
> > > What am I doing wrong?
>
> > > If the examples aren't clear enough I can put the demo bundle on
> > > github for you to check ...

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

Reply via email to