原则 2:如何处理具有额外列的联接表

问题描述 投票:0回答:2

如何在原则 2 中设置具有额外列的联接表,或与附加属性的多对多关联?

properties doctrine-orm many-to-many join
2个回答
74
投票

首先,让我解释一下,这确实存在:

连接表(也称为连接表交叉引用表)是通过主键将同一数据库中的 2 个(或更多)其他表链接在一起的表。 这意味着连接表将只包含外键,没有地方容纳这些额外的列。

因此,当您需要在这样的表中添加额外的列时,它不再只是其他表之间的“链接”,而是自己成为一个真正的表

根据原则 2,您不再在 2 个实体之间建立多对多关联,而是在 3 个实体之间建立一对多/多对一关联。

继续阅读此处以获取更详细的解释:


1
投票

在第二篇文章中,我建议进行一些小更新。不要使用完整的事件,而是在实体本身内使用 LifecycleCallback

/**
 * @ORM\Entity
 * @ORM\Table(name="jobs”)
 * @ORM\HasLifecycleCallbacks
 */
class Job
{
    // ...

    /**
     * @ORM\PreRemove
     */
    public function preRemoveCallback()
    {
        $this->setPerson(null);
        $this->setCompany(null);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.