使用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实体?
我希望我已经解释得很清楚了,如果我还需要进一步说明,请告诉我。
没有看到$userinfo的setter方法,我只能猜测,但我遇到了类似的问题。在我的情况下,问题是我没有在inversedBy
属性的setter中设置相关的mappedBy
属性。
尝试以下操作:
<?php
// ...
class User extends BaseUser {
// ...
public function setUserinfo(UserInfo $userinfo) {
$userinfo->setUser($this);
$this->userinfo = $userinfo;
}
}