MVC + ORM,生成报告

Posted

技术标签:

【中文标题】MVC + ORM,生成报告【英文标题】:MVC + ORM, generating reports 【发布时间】:2010-10-20 07:02:17 【问题描述】:

我刚开始使用 Zend Framework 和 Doctrine 作为它的 ORM,我对模型有些疑问。很明显,ORM 的目的只是将我的域模型映射到数据库模型,但我很好奇您如何为 Web 应用程序所需的各种报表建模?

从我的角度来看,如果我错了,请纠正我,我应该避免在控制器中编写任何查询(在这种情况下是 Doctrine Query Language 查询)。那么,如果我想要一些任意的报告(例如,每个部门的收入,按月划分),我应该在域中有一个特殊的报告“服务”吗?该服务将使用 ORM 查询从数据库中获取我的报告。

如果您能对这个话题有所了解,我将不胜感激。

【问题讨论】:

【参考方案1】:

当然,有时 DQL 是不够的。在 Doctrine2 中,您可以扩展它。但是 Doctrine 1.x 并不愚蠢,你可以使用原生 SQL:http://www.doctrine-project.org/projects/orm/1.2/docs/manual/native-sql/en

如果ORM不够用,可以使用原生SQL。报告是 SQL 查询对于您可以想象的任何简单 QL 变得过于复杂的情况。所以......我说如果你不能避免它,那就去本地查询。但其他一切都保留 Doctrine。

【讨论】:

谢谢。但是模型应该如何制作呢?我应该有服务吗,例如ReportGenerator,使用方法 getRevenueByDepartment()?这方面的最佳做法是什么? 我不知道你的应用结构。拥有“报告”模型对问题的解释过于宽泛。在我工作的领域,每个报告都太独特了,无法将其封装到某个模型中,所以我只是将它们作为不同的实体。我没有理由他们应该有共同点或实际上是“模型”。此外,报告是某种“只读”模型。他们是你的榜样吗?

以上是关于MVC + ORM,生成报告的主要内容,如果未能解决你的问题,请参考以下文章

MVC HttpClient多个post请求,得到不匹配的响应

剑道网格是在 mvc 的后台使用 Ajax 在页面上生成的

Asp.Net Mvc通用后台管理系统,bootstrap+easyui+权限管理+ORM

表示单行的模型是不是应该返回使用多行生成的数据?

将 ORM 安装到自定义 PHP5 框架中

在spring mvc中从ajax调用jasperreport时出现解析器错误