DQL 语句在使用 Zend Framework 和 Doctrine 的应用程序中的位置
Posted
技术标签:
【中文标题】DQL 语句在使用 Zend Framework 和 Doctrine 的应用程序中的位置【英文标题】:Where do DQL statements live in an application that is using Zend Framework and Doctrine 【发布时间】:2010-06-11 23:09:03 【问题描述】:在使用 Zend Framework 1.10 和 Doctrine 1.2 的应用程序中,如果我们的应用程序构建为具有服务层和网关(又名 Doctrine_Table)层,那么 DQL 语句应该位于何处。
看来我们的可能性包括:
1) 将 DQL 语句放置在服务层中,这在我们的应用程序层次结构中似乎有点太高,无法存储 DQL。
2) 将 DQL 语句放置在每个模型的表/网关中,这似乎有点多余,因为我们还需要通过服务层公开执行 getAllUsers() 等操作的 DQL 语句。
以下哪一个是更可取的设计?我们打算尽可能多地使用服务层,以便其他项目可能会消耗我们应用程序的各个部分。
【问题讨论】:
【参考方案1】:在我们的项目中,我们将大部分查询放在服务层中,除非根本不需要服务。
还有第三个选项,你没有提到,即将基本查询放在表中,然后将它们具体化到服务中:
// in the service
$q = $table->getSomeQuery();
$q->addWhere(...)
->findBySome('name')
->execute();
...
【讨论】:
以上是关于DQL 语句在使用 Zend Framework 和 Doctrine 的应用程序中的位置的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Zend Framework 2使用Rest API
在 Zend Framework 中使用 Zend_Db_Table 的 CakePHP 风格的数据库查询结果?
Zend Framework windows8.1下配置zend framework1.12