Dql select in doctrine vs sql query

Dql select in doctrine vs sql query

在学说 'select' 语句中使用 DQL 与本机 sql 相比有什么好处?

例如

     $qb = $em->getRepository('repositoryname')->createQueryBuilder('r);
     $qb->someDqlCondition();
     $qb->getQuery()->getResult();

     $sql = 'string with SELECT sql statement'
     $query = $em->->createQuery($sql)
     $query->getResult();

我和同事讨论过,他说原生 sql 更好。 我认为 dql 使我们能够更改数据库 driver.Is 使用 dql 还有其他好处吗?性能怎么样?

Doctrine Query Language (DQL) 就像您的查询的抽象。这使得查询独立于您的项目所基于的 (SQL) 数据库的版本或类型。

来自文档:

You need to think about DQL as a query language for your object model, not for your relational schema.

这也意味着(就像@Matteo 在他的评论中所说的那样)您可以更轻松地将您的项目移植到另一种类型上,而无需重写所有查询。

使用 the doctrine QueryBuilder 将这种抽象提升到一个新的水平。