Symfony的OneToOne 2

时间:2014-09-08 08:31:55

标签: symfony annotations doctrine one-to-one

我尝试保存相关实体User和Profile。我使用cascade = {“persist”}选项。除了Profile表中的user_id字段外,数据在数据库中正确保存,等于null。当我转向关系时,用户表中的profile_id字段保存正确。我的错误在哪里?这是我的关系:

用户实体:

/**
 * @ORM\OneToOne(targetEntity="Profile", mappedBy="user", ,cascade={"persist"})
 */

个人资料实体:

/**
 * @ORM\OneToOne(targetEntity="User", inversedBy="profile", cascade={"persist"})
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */

Getters&设置器:

用户:

` /**
 * @param Profile $profile
 */
public function setProfile(Profile $profile)
{
    $this->profile = $profile;
}

/**
 * @return Profile
 */
public function getProfile()
{
    return $this->profile;
}`

资料:

`/**
 * @param User $user
 */
public function setUser(User $user)
{
    $this->user = $user;
}

/**
 * @return User
 */
public function getUser()
{
    return $this->user;
}`

2 个答案:

答案 0 :(得分:0)

也许您只在用户中添加个人资料:$user->addProfile($profile);而您没有反之亦然:$profile->addUser($user);

答案 1 :(得分:0)

这基本上是@skler的答案,但我无法在评论中解释自己。

尝试在User.php setProfile()

中执行此操作
public function setProfile(Profile $profile)
{
    $this->profile = $profile;
    $this->profile->setUser($this);
}