DQL

来源:互联网 发布:怎么测试网络丢包率 编辑:程序博客网 时间:2024/05/31 13:14

对,你没有看错,这里是DQL而不是SQL。DQL是毛语言呢?Document Query Language,意思就是文档化的sql语句,为什么sql语句需要文档化呢?sql语句更倾向于表结构实现,所以在写sql语句的时候头脑中需要具现化的是表结构,而ORM的目的就是不需要开发者关注表结构,所以需要一个不基于表结构的查询语句,又能直接翻译成为SQL语句,这就是DQL。DQL可以直接对Entity进行增删改查,而不需要直接对表进行操作。

比如下面的一个例子:

$dql = "SELECT b, e, r FROM Bug b JOIN b.engineer e JOIN b.reporter r ORDER BY b.created DESC";$query = $entityManager->createQuery($dql);$query->setMaxResults(30); 
$bugs=$query->getResult();

看这里的sql中From的就是“Bug”,这个是Entity的类,其实熟悉了sql,dql的查询语法也是一模一样的。

考虑使用dql而不是sql除了和ORM目标一致外,还有一个好处,就是存储层和逻辑层的耦合分开了。比如我的存储层要从mysql换成mongodb,那么逻辑层是什么都不需要动的。


原文地址:http://www.cnblogs.com/yjf512/p/3375614.html

0 0
原创粉丝点击