我有一个父实体,它指的是一个子实体,这些类的编写如下:
class MyEntity {
/**
* ORM Annotations
*/
private $id;
/**
* ORM Annotations
*/
private $name;
/**
* @var string
* @ORM\OneToOne(targetEntity="Picture")
*/
private $image;
/** Getters & Setters **/
}
private Image {
private $id;
private $image_url;
}
这里,Image是一个弱实体,我不想在插入MyEntity
对象之前插入图像。基本上,我的问题是,如何呈现MyEntity
的表单,以便Image
表单作为其中的一部分显示,并在保存MyEntity
时保存图像。
答案 0 :(得分:1)
为什么您的代码有targetEntity="Picture"
,并且您已将Image
定义为子实体。我想有一个错字,你需要纠正。
您需要在cascade={"persist", "update"}
中的image
关联中添加MyEntity
。
这将确保Image实体与MyEntity
一起创建/更新。
现在表单部分
为FormType
创建新的Image
,我们将其称为ImageType
。
在MyEntity
FormType中,将新FormType添加为新字段:
$builder
->add('image', ImageType::class, array(
'label' => 'Image'
));
现在,在表单提交时,将相应地创建/更新子实体(图像)。
注意:您需要明确处理图片上传。
希望这有帮助!