我尝试保存相关实体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;
}`
答案 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);
}