如何在 Doctrine 2 中设置带有额外列的连接表,或与其他属性的多对多关联?
问问题
24220 次
2 回答
69
首先,让我解释一下,这不存在:
连接表(也称为连接表或交叉引用表)是通过主键将同一数据库中的 2 个(或多个)其他表链接在一起的表。这意味着连接表将只包含外键,这些额外的列没有位置。
所以当你在这样一个表中需要额外的列时,它就不再只是其他表之间的“链接”,而是独立成为一个真正的表!
就 Doctrine 2 而言,您不再拥有 2 个实体之间的多对多关联,而是获得 3 个实体之间的一对多/多对一关联。
继续阅读这里以获得更详细的解释:
于 2013-09-06T10:23:05.523 回答
1
在第二篇文章中,我建议进行小幅更新。在实体本身中使用LifecycleCallback而不是完整事件:
/**
* @ORM\Entity
* @ORM\Table(name="jobs”)
* @ORM\HasLifecycleCallbacks
*/
class Job
{
// ...
/**
* @ORM\PreRemove
*/
public function preRemoveCallback()
{
$this->setPerson(null);
$this->setCompany(null);
}
}
于 2015-11-11T14:16:31.703 回答