Php 反向侧一列、拥有侧多列的双向关联
我使用的是教义2。假设我们有两个实体:用户和Bug。是否可能在反向端(用户)有一列,在拥有端(Bug)有多列,这是双向关联 如果我在Bug实体中定义如下列: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
/** @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);
}
}
这正是我现在正在做的。但我想有一个双向关联。这是双向关联。是的,是的。我想说在用户实体中有两列,但我想问的是是否可能只有一列。