坚持相关实体

时间:2011-11-04 23:05:30

标签: php doctrine doctrine-orm symfony

使用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实体的正确方法是什么。

我希望我已经解释得很好,如果我能进一步澄清,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果没有看到$ userinfo的setter方法,我只能猜测,但我遇到了类似的问题。在我的情况下,问题是我没有在mappedBy属性的setter中设置相关的inversedBy属性。

尝试以下方法:

<?php
// ...
class User extends BaseUser {
  // ...
  public function setUserinfo(UserInfo $userinfo) {
    $userinfo->setUser($this);
    $this->userinfo = $userinfo;
  }
}