Doctrine 中的递归有多糟糕?

Viv*_*ien 3 database-design symfony doctrine-orm

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

“多对一”和“多对多”

数据库架构

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

[ceo] => Object
    (
        [id] => 1
        [Current_Company] => Object
             (
                 [id] => 1
                 [ceo] => Object
                  *RECURSION*
             )
    )
Run Code Online (Sandbox Code Playgroud)

没有错误,主义和交响乐工作得很好。但这是在模式中保留递归的好方法吗?

Eln*_*mov 5

我认为这个问题比 Doctrine 和 Symfony 更普遍,所以我会给出一个高水平的答案,分享我的哲学。

\n\n

有两个思维阵营:

\n\n
    \n
  1. 数据库比使用它的应用程序更重要,
  2. \n
  3. 应用程序比数据库更重要。
  4. \n
\n\n

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

\n\n

在数据库模式中拥有双向关系是完全可以的,因此无论我使用什么数据库抽象工具,它都必须接受并接受这一点。

\n