Php 反向侧一列、拥有侧多列的双向关联

Php 反向侧一列、拥有侧多列的双向关联,php,doctrine-orm,relationship,Php,Doctrine Orm,Relationship,我使用的是教义2。假设我们有两个实体:用户和Bug。是否可能在反向端(用户)有一列,在拥有端(Bug)有多列,这是双向关联 如果我在Bug实体中定义如下列: /** @Entity */ class Bug { /** @ManyToOne(targetEntity="User", inversedBy="associated_bugs") */ protected $reported_by; /** @ManyToOne(targetEntity="User", inverse

我使用的是教义2。假设我们有两个实体:用户和Bug。是否可能在反向端(用户)有一列,在拥有端(Bug)有多列,这是双向关联

如果我在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="assigned_to")
   **/
  protected $associated_bugs;


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

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

/** @Entity */
class User {
  /**
   * @OneToMany(targetEntity="Bug", mappedBy="???")
   * @var Bug[]
   **/
  protected $associated_bugs;
}
大概是这样的:

/** @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="assigned_to")
   **/
  protected $associated_bugs;


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

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

对于指定的bug:

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

对于报告的bug


这应该可以完成工作

不,这是映射无法完成的。假设您将错误列表设置为
User::associated_bugs
。在调用persist时,您希望它如何存储这些信息

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

/** @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);
  }
}

这正是我现在正在做的。但我想有一个双向关联。这是双向关联。是的,是的。我想说在用户实体中有两列,但我想问的是是否可能只有一列。