25

如何在 Doctrine 2 中设置带有额外列的连接表,或与其他属性的多对多关联?

4

2 回答 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 回答