【问题标题】:Doctrine 2: How to handle join tables with extra columns原则 2:如何处理带有额外列的连接表
【发布时间】:2013-09-06 10:12:44
【问题描述】:

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

【问题讨论】:

  • @ThatBlairGuy 我注意到你删除了很多 extra 标签。此编辑已足够,但除了删除标签外,请务必修复帖子的所有方面。更多信息,请阅读meta discussion

标签: properties doctrine-orm many-to-many jointable


【解决方案1】:

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

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

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

就 Doctrine 2 而言,您不再拥有 2 个实体之间的多对多关联,而是获得 3 个实体之间的一对多/多对一关联。

继续阅读这里以获得更详细的解释:

【讨论】:

  • 链接已更新! (格式可能有点不对,会尽快修复)
  • 非常感谢您更新链接!
  • @JasperN.Brouwer 恭喜,写得很好!感谢您的链接。
  • 解释得很好。谢谢你。你拯救了我的一天!
【解决方案2】:

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

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

    /**
     * @ORM\PreRemove
     */
    public function preRemoveCallback()
    {
        $this->setPerson(null);
        $this->setCompany(null);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多