当我尝试使用User
实体保存Related Profile
实体时(我使用cascade={"persist"}
选项)我保存了两个实体,但Profile
实体保存为空{{1} }}字段。
用户:
user_id
个人资料:
/**
* @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\Profile", mappedBy="user", cascade={"persist"})
*/
答案 0 :(得分:1)
cascade={"persist"}
与此无关。
您定义此方法的方式,您尚未创建一个(bidrectional)关系,其中用户指向个人资料,同一个个人资料指向同一个用户。
相反,您有两个(unidrectional)关系:用户指向一个配置文件,而配置文件指向(可能)不同的用户。
如果查看表格,这是可见的。您的User表将具有profile_id字段,Profile表将具有user_id字段(但您只需要两个bot)。由于您可能只是在User Entity中设置了Profile属性,而不是Profile实体的User属性,因此Profile表的user_id字段为空。
您需要一个(单个)双向一对一关系,如下所述:
您实际想要存储关系的实体需要有inversedBy
注释参数:
/**
* @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\User", inversedBy="profile", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/