教条:QueryBuilder和createQuery? [英] doctrine: QueryBuilder vs createQuery?
问题描述
在Doctrine中,您可以通过两种方式创建DQL:
EntityManager :: createQuery :
$ query = $ em-> createQuery('SELECT u FROM MyProject\Model\User u WHERE u.id =?1');
QueryBuilder :
- > add('from','User u')
- 添加('select','u' > add('where','u.id =?1')
- > add('orderBy','u.name ASC');
我想知道有什么区别,应该使用哪些?
-
DQL更容易阅读,因为它非常类似于SQL。如果您不需要根据一组参数更改查询,这可能是最佳选择。
-
查询构建器是一种构建查询的API,因此,如果您需要动态构建查询,就像迭代一组参数或过滤器一样容易。您不需要执行任何字符串操作来构建查询,如join,split或其他任何操作。
In Doctrine you can create DQL in 2 ways:
EntityManager::createQuery:
$query = $em->createQuery('SELECT u FROM MyProject\Model\User u WHERE u.id = ?1');
QueryBuilder:
$qb->add('select', 'u')
->add('from', 'User u')
->add('where', 'u.id = ?1')
->add('orderBy', 'u.name ASC');
I wonder what the difference is and which should I use?
DQL is easier to read as it is very similar to SQL. If you don't need to change the query depending on a set of parameters this is probably the best choice.
Query Builder is an api to construct queries, so it's easier if you need to build a query dynamically like iterating over a set of parameters or filters. You don't need to do any string operations to build your query like join, split or whatever.
这篇关于教条:QueryBuilder和createQuery?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!