我有User
登录注册页。
现在在同一页面上我还有一个表格,UserInterests
。
现在我有PostPersist功能,在用户保持
后创建新的UserProfile
现在,UserProfile与用户ID相关联,UserInterests
与UserProfile ID
现在客户端希望UserInterests在同一个用户页面上,但我有问题,即尚未创建UserProfile。现在怎么能坚持下去。有什么办法
答案 0 :(得分:4)
我不认为你可以在冲洗前获得身份证。
您可以在模型之间创建关联,这样,Doctrine会在保存时处理id,您可以使用以下内容检索UserInterests:
$user->getProfile()->getInterests();
因此,您的User模型将具有包含UserProfile的属性:
/**
* @OneToOne(targetEntity="UserProfile")
* @JoinColumn(name="profile_id", referencedColumnName="id")
**/
private $profile;
并且您的UserProfile类应具有保存UserInterests模型的属性。
/**
* @OneToOne(targetEntity="UserInterests")
* @JoinColumn(name="interests_id", referencedColumnName="id")
**/
private $interests;
您现在可以创建一个空的$ userProfile模型(将其他模型链接在一起,实际填充可以在postPersist函数中完成)和$ userInterests模型,将它们关联起来
$interests = new UserInterests();
// create an empty UserProfile, and fill it in your PostPersist function,
// that way it can already be used to link the User and UserInterests
$profile = new UserProfile();
$profile->setInterests($interests);
$user->setProfile($profile);
现在,Doctrine会在持久化时填写ID,你不需要担心它们。
更多信息here