【问题标题】:FOSUserBundle One-To-One mapped Entity not savedFOSUserBundle 一对一映射的实体未保存
【发布时间】:2026-01-21 14:55:01
【问题描述】:

大家好,我有一个关于在实体 FosUserBundle 中实现一对一的问题。

用户实体与配置文件实体具有一对一的映射关系。按照 FOSUserBundle 的文档中所示,我已经覆盖了基本的 RegistrationFormType。记录也保存在两个表中。但映射实体向我显示空白数据。请找到受人尊重的 gist 文件。

【问题讨论】:

  • 你究竟从哪里得到空白数据?
  • 在个人资料实体表中
  • 您的问题表明表格已正确更新?另请注意,学说只会将信息存储在关系的拥有方。
  • 是的表已更新
  • 这让我们回到了我的第一条评论。你能添加一个失败的例子吗?

标签: symfony doctrine-orm fosuserbundle


【解决方案1】:

您的实现的问题是您没有更新双向关联的owning sideDoctrine documentation 明确指出:

看看外键是如何在关系的拥有方,表 Cart 上定义的。

在您的情况下,拥有方是 Profile,您可以在 setUserId() 中自动更新,如下所示:

public function setUserId(\XXXX\Bundle\UserBundle\Entity\User $userId = null)
{
    $this->userId = $userId;
    $userId->setProfile($this);

    return $this;
}

你可以毫无问题地访问关系两边的数据,Doctrine 会查找相应的条目。

【讨论】:

  • 感谢您的回答,我已按照链接 jeremymarc.github.io/2013/01/31/… 中的建议更改了代码,请参阅部分 - 解决方案 1. 更新 User.php 中的设置器。
  • 现在我得到了你的问题,我更新了答案以防其他人有同样的问题。
  • 我遇到了同样的问题,但上面报告的解决方案似乎不起作用......我可能遗漏了一些东西。请你帮助我好吗? *.com/questions/27441573/…
最近更新 更多