【问题标题】:Persisting related entity持久化相关实体
【发布时间】:2011-11-04 23:05:29
【问题描述】:

使用 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::$user 进行了任何分配?
  • 我不确定你所说的分配是什么意思,但我已经在上面包含了我的用户信息实体的一部分,其中 JoinColumn 与 user_id 引用来自用户实体的 id。

标签: php doctrine doctrine-orm symfony


【解决方案1】:

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

尝试以下方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-02
    • 2016-06-10
    • 2015-07-27
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多