【问题标题】:What do you think of returning select object instead of statement result?您如何看待返回选择对象而不是语句结果?
【发布时间】:2009-05-12 19:12:37
【问题描述】:

我很想知道从像“$selectObj = getSomethingByName($name)”这样的方法返回一个选择对象然后将它传递给像“getResult($selectObj)”这样的另一个方法是否是个好主意会成功的。 这个想法是能够根据我的模型将选择对象传递给任何有用的函数,如 'setLimit(10)' 或 addCriteria('blabla') ...

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

我以前像上面那样做简单的方法,但将结果作为一行返回...但是当您根据不同的表有复杂的语句时,有时会很痛苦..

【问题讨论】:

    标签: php database zend-framework


    【解决方案1】:

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

    相反,使用Domain Model 模式并将复杂的多表数据库逻辑封装到一个地方,这样您的控制器和视图就不必了解所有杂乱的细节。他们只知道您的领域模型类的接口,并且该类有唯一责任知道如何从数据库中获取信息。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多