【发布时间】:2013-01-19 13:41:40
【问题描述】:
我正在学习 OOPHP,我正在寻找一些“最佳实践”建议。
对于关系数据库,许多表中显然存在外键。当我为我的站点创建模型时,我试图确定是在模型中进行 JOIN 查询更好,还是让一个模型调用另一个模型更好?
调用其他模型似乎使代码更加模块化。无论是在另一个表还是另一个模型上,这两种方式似乎都会产生依赖关系。
如果我采用“调用其他模型”的方法,我似乎遇到了另一个问题:无限循环。这是我遇到的例子。我有 2 张桌子,person 和 school。每个person 都有一个最喜欢的学校,用schoolId 表示。每个school 都有一个principal,即personId。
该行映射到的person 对象在其构造函数中接受school 对象,但学校行映射到的school 对象在其构造函数中接受person 对象。
根据我的发现,延迟加载似乎是解决方案,但是(我可能错了)如果我这样做,我似乎无法使用 PHP 的类型提示。
(我猜很多人会向我推荐像 Doctrine 这样的 ORM 工具,而且我肯定会在未来研究它。我现在正在避免它,因为它被认为是陡峭的学习曲线,并且因为我觉得我理解如果我自己尝试一次,这些工具以后会更好)
【问题讨论】:
-
拥有大量模型而不是连接确实会创建依赖关系,我认为这不是您想要做的。使用连接是正常的,我看不出有什么问题。
-
但也不加入创建依赖项?如果编辑了用于大量连接的表,则必须编辑所有这些连接查询。对于许多模型,您将更新 1 个模型,并且更改会传播给调用它的每个人。
标签: php join domain-object