在doctrine vs native sql中的'select'语句中使用DQL有什么好处?
例如
$qb = $em->getRepository('repositoryname')->createQueryBuilder('r);
$qb->someDqlCondition();
$qb->getQuery()->getResult();
VS
$sql = 'string with SELECT sql statement'
$query = $em->->createQuery($sql)
$query->getResult();
我和我的同事讨论了这个问题,他说原生sql更好。 我认为dql使我们能够更改数据库驱动程序。使用dql还有其他好处吗?性能怎么样?
答案 0 :(得分:4)
Doctrine Query Language (DQL)就像是对查询的抽象。这使得查询独立于构建项目的(SQL)数据库的版本或类型。
来自文档:
您需要将DQL视为对象模型的查询语言,而不是您的关系模式。
这也意味着(就像@Matteo在他的评论中所说的那样)你可以更轻松地将你的项目移植到另一种类型而不必重写你的所有查询。
使用 the doctrine QueryBuilder
可将此抽象提升到新的水平。