0

我正在使用 Doctrine 2。假设我们有两个实体:UserBug。是否可以与反向侧的一列(用户)和拥有侧的多列(错误)建立双向关联?

例子

如果我像这样在Bug实体中定义列:

/** @Entity */
class Bug {
  /** @ManyToOne(targetEntity="User", inversedBy="associated_bugs") */
  protected $reported_by;

  /** @ManyToOne(targetEntity="User", inversedBy="associated_bugs) */
  protected $assigned_to;
}

然后我不知道在用户实体中写什么......

/** @Entity */
class User {
  /**
   * @OneToMany(targetEntity="Bug", mappedBy="???")
   * @var Bug[]
   **/
  protected $associated_bugs;
}
4

2 回答 2

1

不,这是映射无法做到的。假设您将错误列表设置为User::associated_bugs. 您希望它在调用持久化时如何存储它?

您应该分别映射这两种类型的错误,然后将它们组合到一个方法中。

/** @Entity */
class User {
  /**
   * @OneToMany(targetEntity="Bug", mappedBy="reported_by")
   * @var Bug[]
   **/
  protected $reported_bugs;
  /**
   * @OneToMany(targetEntity="Bug", mappedBy="assigned_to")
   * @var Bug[]
   **/
  protected $assigned_bugs;

  protected function getAssociatedBugs()
  {
      return array_merge($this->reported_bugs, $this->assigned_bugs);
  }
}
于 2013-05-03T12:33:12.730 回答
0

像这样的东西:

/** @Entity */
class User {

  /**
   * @OneToMany(targetEntity="Bug", mappedBy="assigned_to")
   **/
  protected $associated_bugs;


  /**
   * @OneToMany(targetEntity="Bug", mappedBy="reported_by")
   **/
  protected $reported_bugs;

}

在 Bug 实体中,您必须添加以下注释:

对于分配的错误:

@JoinColumn(name="assignee_id", referencedColumnName="id", onDelete="cascade")

@JoinColumn(name="reporter_id", referencedColumnName="id", onDelete="cascade")

对于报告的错误

这应该做的工作

于 2013-05-03T12:31:24.073 回答