您如何看待返回选择对象而不是语句结果?

时间:2009-05-12 19:12:38

标签: php database zend-framework

我想知道从'$ selectObj = getSomethingByName($ name)'这样的方法返回一个select对象然后将它传递给另一个方法如'getResult($ selectObj)'是一个好主意会做的。 我的想法是能够将select对象传递给任何有用的函数,如'setLimit(10)'或addCriteria('blabla'),具体取决于我的模型......

但这样做是个好主意吗?它可能是'不安全',因为用户可以自己修改对象,我不应该这样做..

我曾经像上面那样做过简单的方法但是把结果作为一行返回......但是当你根据不同的表有复杂的陈述时,它有时会很痛苦。

1 个答案:

答案 0 :(得分:5)

您面临的问题(复杂的语句取决于不同的表)是一般的ORM框架的一个古老而普遍的问题。 SQL可以做很多事情,ORM做得不好。不可避免地,您必须通过在Controller或View中编写大量复杂代码来弥补复杂性的不同。

相反,使用Domain Model模式并将复杂的多表数据库逻辑封装到一个位置,这样您的控制器和视图就不必知道所有各种细节。他们只知道您的Domain Model类的接口,该类负责知道如何从数据库中获取信息。

请记住:模型“HAS-A”表(或多个表) - 而不是模型“IS-A”表。