在我的数据库中,我在两个表之间有两个关系:

“多对一”和“多对多”

所以当我加载对象 CEO 时,我有:

[ceo] => Object
    (
        [id] => 1
        [Current_Company] => Object
             (
                 [id] => 1
                 [ceo] => Object
                  *RECURSION*
             )
    )

没有错误,学说和 symfony 运行良好。但这是在模式中保持递归的好方法吗?

最佳答案

我认为这个问题比 Doctrine 和 Symfony 更笼统,所以我会给出一个高层次的答案,分享我的哲学。

有两种思想阵营:

  • 数据库比使用它的应用程序更重要,
  • 应用程序比数据库更重要。

  • 我属于第一阵营。对我来说,数据库通常比使用它的应用程序生命周期更长,因此将应用程序弯曲到数据库是合乎逻辑的 - 反之亦然。这意味着,如果数据库和应用程序层发生冲突,则数据库层获胜。这就是为什么我更喜欢 DataMapper 模式而不是 ActiveRecord:AR 使您可以更改数据库架构以匹配您的应用程序,而 DM 使您的应用程序适合数据库架构。

    在数据库模式中有双向关系是完全没问题的,所以无论我使用什么数据库抽象工具,它都必须接受并接受它。

    关于database-design - Doctrine 中的递归有多糟糕?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8259431/

    10-12 05:29