如何在学说2

时间:2018-03-14 03:21:21

标签: symfony doctrine-orm

我正在使用Symfony 4.我有两个实体,Image和Anime,其中每个图像只能是一个动画。因此,在Image实体中,我创建了一个$ anime变量并将其设置为"多对一"与动漫实体的关系。

/**
 * @ORM\Entity(repositoryClass="App\Repository\ImageRepository")
 * @ORM\Table(name="image")
 */
class Image
{
    private $id;
    // and other properties

    /**
     * @ORM\ManyToOne(targetEntity="Anime")      
     */
    private $anime;
}

在Anime实体中,我有id和名称

Class Anime
{
    private $id;
    private $name;
}

当我迁移它时,它成功创建了两个表并添加了一个外键" anime_id"在"图像"表。我遇到的问题是如何更新这个" anime_id"通过表格提交?

这是我的表单,我只想将anime_id更新为我的图片。

ImageUpdateType.php

class ImageUpdateType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder            
            ->add('anime_id', EntityType::class, [
                 'class' => Anime::class,
                 'choice_label' => 'name'
            ])
            ->add('update', SubmitType::class, array('label' => 'update'));
    }
}

在Symfony文档中,他们只是检索实体对象并执行了一个setXXX(),但我在我的Image实体中没有$ anime_id属性。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

在您的表单中,您必须使用对象的属性而不是列:

class ImageUpdateType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder            
            ->add('anime', EntityType::class, [
                 'class' => Anime::class,
                 'choice_label' => 'name'
            ])
            ->add('update', SubmitType::class, array('label' => 'update'));
    }
}