Doctrine的查询构建器的目的是什么?

时间:2013-03-12 19:34:43

标签: 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

我在这里看到的唯一优势是数据清理和参数绑定,可以使用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'));

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

1 个答案:

答案 0 :(得分:0)

这种方式更具结构性。它还从PHP代码中删除了DQL(或SQL)代码,这种代码看起来更好。