在我的数据库中,我在两个表之间有两个关系:
“多对一”和“多对多”
所以当我加载对象 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/