我想询问在提交表单时持久化两个实体的可能性。这可能吗?
$em = $this->getDoctrine()->getManager();
$em->persist($a);
$em->persist($b);
$em->flush();
知道我在两个实体之间有公共字段。实际上,字段是由于两个实体之间的多对一关系而生成的。此外,我将在第二个实体中添加一些字段。
是的,保留两个实体是可以的,但是首先检查你的实体关系,例如,如果A与B有oneToMany
关系,那么你将在A
实体中有一个addB()
方法。
在这个特定用例中持久化相关实体就像在关系上添加cascade={"persist"}
并持久化A
一样简单。
如果你有一些特定的简单逻辑,你想添加到B
之前保存A
与B
相关的元素,你可以把这个逻辑在addB()
,这样每次一个B
元素被添加到你的A
实体,你会得到你想要的变化(设置正确的状态,日期,…)