在Doctrine中,您可以通过两种方式创建DQL:
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');我想知道有什么不同,我应该使用哪一个?
发布于 2010-12-09 08:23:49
发布于 2010-12-09 16:34:28
可以说,查询构建器只是创建查询的接口……它应该更易于使用,它不仅有add()方法,还有where()、andWhere()、from()等方法,但最终,它只是组成了您在createQuery()方法中使用的查询。
查询构建器的更高级用法示例:
$em->createQueryBuilder()
->from('Project\Entities\Item', 'i')
->select("i, e")
->join("i.entity", 'e')
->where("i.lang = :lang AND e.album = :album")
->setParameter('lang', $lang)
->setParameter('album', $album);发布于 2012-08-17 01:07:04
它们有不同的目的:
当您知道完整的查询时,
https://stackoverflow.com/questions/2678631
复制相似问题