Symfony形式OneToMany实体ManyToOne关系

时间:2016-02-22 13:27:31

标签: symfony

存在三个实体;主题,元和用户。

主题OneToMany Meta ManyToOne用户

如何使用Symfony Forms创建它?

最初这是Topic和User之间的ManyToMany关系,但是这已被改变以允许关于关系的其他信息存储在Meta中。

原始形式:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('title')
        ->add('users')
    ;
}

修改后的表格:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('title')
        ->add('users', EntityType::class, [
            'multiple' => true,
            'class' => 'FooBarBundle:User',                
            'choice_label' => 'username',
            ])
    ;
}

这将呈现一个带有标题的表单和一个用户的多选。问题是用户没有映射到Meta,因此用户数据不会被保留。是mapped=false并使用控制器将Meta实体附加到Thread以正确的方式来处理这种关系?或者有没有办法使用DataTransformer将用户转换为Metas?

---更新---

public function setUsers($users) {
    foreach($users AS $user) {
        $meta = new Meta();
        $meta
            ->setUser($user)
            ->setThread($this);
        $this->addMeta($meta);
    }
    return $this;
}

或者正在使用Form::handleRequestThread::setUsers内的电话将用户转换为Meta?

0 个答案:

没有答案