使用FOSUserBundle,我试图坚持相关实体。我使用名为UserInfo的新实体扩展了User。持续使用级联功能时:
注册时,相关userinfo实体中的user_id列未填充用户实体的id值:
用户实体:
/**
* @ORM\Entity
* @ORM\Table(name="re_user")
*/
class User extends BaseUser
{
...
/**
* @ORM\OneToOne(targetEntity="UserInfo", mappedBy="user", cascade={"persist", "remove"})
*/
protected $userinfo;
用户
class UserInfo
{
...
/**
* @ORM\OneToOne(targetEntity="User", inversedBy="userinfo")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
...
}
持久保存相关FOSUserBundle实体的正确方法是什么。
我希望我已经解释得很好,如果我能进一步澄清,请告诉我。
答案 0 :(得分:0)
如果没有看到$ userinfo的setter方法,我只能猜测,但我遇到了类似的问题。在我的情况下,问题是我没有在mappedBy
属性的setter中设置相关的inversedBy
属性。
尝试以下方法:
<?php
// ...
class User extends BaseUser {
// ...
public function setUserinfo(UserInfo $userinfo) {
$userinfo->setUser($this);
$this->userinfo = $userinfo;
}
}