【问题标题】:Dql select in doctrine vs sql queryDql在学说vs sql查询中选择
【发布时间】:2016-02-29 04:22:04
【问题描述】:

在学说中的“选择”语句中使用 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 使我们能够更改数据库驱动程序。使用 dql 还有其他好处吗?性能怎么样?

【问题讨论】:

  • DQL 在数据库而不是原生 sql 之间更具可移植性
  • 另外,如果你使用查询缓存,性能不是问题,它节省了 SQL 和 DQL 之间的转换

标签: symfony doctrine-orm doctrine


【解决方案1】:

Doctrine Query Language (DQL) 就像您的查询的抽象。这使得查询与构建项目的 (SQL) 数据库的版本或类型无关。

来自文档:

您需要将 DQL 视为对象模型的查询语言,而不是关系模式。

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

使用 the doctrine QueryBuilder 可以将此抽象提升到一个新的水平。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多