php - Doctrine 的查询生成器的目的是什么?

标签 php orm doctrine query-builder

我想知道使用 doctrine 来构建查询的优点到底是什么:

<?php
// $qb instanceof QueryBuilder

$qb->select('u')
   ->from('User u')
   ->where('u.id = :identifier')
   ->orderBy('u.name ASC');
   ->setParameter('identifier', 100); // Sets :identifier to 100, and thus we will fetch a user with u.id = 100

我在这里看到的唯一优势是数据清理和参数绑定(bind),这可以使用 PDO 轻松完成。

还有一个例子:

<?php
// $qb instanceof QueryBuilder

// example8: QueryBuilder port of: "SELECT u FROM User u WHERE u.id = ? OR u.nickname LIKE ? ORDER BY u.surname DESC" using Expr class
$qb->add('select', new Expr\Select(array('u')))
   ->add('from', new Expr\From('User', 'u'))
   ->add('where', $qb->expr()->orX(
       $qb->expr()->eq('u.id', '?1'),
       $qb->expr()->like('u.nickname', '?2')
   ))
   ->add('orderBy', new Expr\OrderBy('u.name', 'ASC'));

额外的依赖性能成本真的值得吗?上面的语法对我来说似乎比包含查询的简单字符串更复杂。

最佳答案

这样更有条理。它还从 PHP 代码中删除了 DQL(或 SQL)代码,这样看起来好多了。

关于php - Doctrine 的查询生成器的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370516/

相关文章:

php - 面向对象的 PHP 中的实例配置

javascript - 如何将多个 php 值查询到一个 javascript 变量中

php - 如何在 php 中获取流长度或插入符位置?

Doctrine 多态关联

php - 如何在 PHP 中获取 JavaScript 变量值

java - hibernate :flush() 和 commit()

c# - NHibernate 中的映射问题

java - JPA 映射中的原始类型。如果数据库列可能为 NULL 怎么办?

arrays - 为关联数组选择哪种映射类型? Doctrine ODM

php - 如何强制 Doctrine 更新数组类型字段?