【发布时间】:2013-09-06 10:12:44
【问题描述】:
如何在 Doctrine 2 中设置带有额外列的连接表,或与其他属性的多对多关联?
【问题讨论】:
-
@ThatBlairGuy 我注意到你删除了很多 extra 标签。此编辑已足够,但除了删除标签外,请务必修复帖子的所有方面。更多信息,请阅读meta discussion
标签: properties doctrine-orm many-to-many jointable
如何在 Doctrine 2 中设置带有额外列的连接表,或与其他属性的多对多关联?
【问题讨论】:
标签: properties doctrine-orm many-to-many jointable
首先,让我解释一下这确实不存在:
联接表(也称为联结表或交叉引用表)是链接2个(或更多)的表通过主键将同一数据库中的其他表放在一起。 这意味着连接表将只包含外键,这些额外的列没有位置。
所以当你在这样一个表中需要额外的列时,它不再只是其他表之间的“链接”,而是自己成为一个真正的表!
就 Doctrine 2 而言,您不再拥有 2 个实体之间的多对多关联,而是获得 3 个实体之间的一对多/多对一关联。
继续阅读这里以获得更详细的解释:
【讨论】:
在第二篇文章中,我建议进行小幅更新。在实体本身中使用 LifecycleCallback 而不是完整事件:
/**
* @ORM\Entity
* @ORM\Table(name="jobs”)
* @ORM\HasLifecycleCallbacks
*/
class Job
{
// ...
/**
* @ORM\PreRemove
*/
public function preRemoveCallback()
{
$this->setPerson(null);
$this->setCompany(null);
}
}
【讨论】: