【问题标题】:Why doesn't CakePHP support a foreign key with multiple columns?为什么 CakePHP 不支持具有多列的外键?
【发布时间】:2010-09-29 23:00:06
【问题描述】:

我在谷歌上搜索了这个,但没有得到很好的结果。我在 CakePHP trac 中找到的唯一 topic 在没有“真实”解释的情况下被关闭。由于 CakePHP 就像是 php 的 rails 端口之一,而 rails 确实支持这一点,我想知道它为什么不支持这个功能。


好的。但我想决定我的数据库模式将如何,在 RoR 中你有工具,如果你想使用它,你会冒着风险去做。 顺便说一句:我不知道交响乐是否也允许这样做。

【问题讨论】:

    标签: php mysql database-design cakephp


    【解决方案1】:

    只有 CakePHP 团队才能确定。团队成员之一,Nate Abdele,said this 关于多列主键早在 2007 年 2 月:

    我可以想出一百万个其他的 多列主键的原因 是一个愚蠢的想法,但我认为最 2007 年的重要一件事是 打破网络上的 REST 架构, 因为没有单点 引用一段数据,并且 数据现在可能会在您身上发生变化,而无需 你知道,所以物体不能 不再被一致地引用 单个 URI。

    我认为这也是他反对多列外键的论点。

    【讨论】:

    • 哎哟。弱论点恕我直言。它们被称为复合键。
    • 一个键是否是复合的取决于所用列的属性。
    • 据我所知,多列主键并没有真正的用途,但多列外键可能有合理的需求。我现在需要这个,但发现解决方法并不令人满意。
    【解决方案2】:

    您可以通过将第二列的条件添加到关联中来获得相同的结果吗?

    【讨论】:

      【解决方案3】:

      有人学蛋糕说得最好:

      我正在学习,如果有的话 在 cakephp 中非常困难, 你可能有设计问题。
      --asciimo

      【讨论】:

        【解决方案4】:

        不,支持多列主键的真正原因是为了将 CakePHP 改装到现有应用程序中。当然,不要提倡这种做法,因为它的设计很糟糕,但是如果您可以选择使用多个主键而不是重新设计现有管理系统的大部分内容,那么简单的选择将是一个非常好的功能。

        【讨论】:

        • 您有多少个带有复合键的表?您所要做的就是为(PK)添加一个“id”列。我最多可以想象一天的工作。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        • 1970-01-01
        相关资源
        最近更新 更多