我正在使用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属性。这样做的正确方法是什么?
答案 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'));
}
}