持久化相关实体


Persisting related entity

使用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;
  }
}