1
学说2支持多种方法来创建一个查询。Doctrine2:何时使用查询生成器,它是从构建查询的其他方式的区别?
其中之一是经典的方式,通过实体管理器;
$this->getEntityManager()
->createQuery('SELECT p FROM AcmeStoreBundle:Product p ORDER BY p.name ASC')
->getResult();
而另一种是与查询生成器:
$qb = $this->createQueryBuilder('c');
//...
->leftJoin('c.city_state', 's')
->where("CONCAT(c.name) LIKE :$field")
->setParameter("$field", "%$smartbox%", \PDO::PARAM_STR)
->setMaxResults($limit);
乍一看,我会用后者的唯一原因是为了帮助我建立的条件查询。
if($value == 'something')
$qb->add('where', '...');
我徘徊是否有其他的原因,我宁愿第一或写一个通常的查询第二种方式?
而且,还有其他方法可以在Doctrine 2中构建查询(本机查询除外)?
编辑:我刚刚发现了类似的问题here,但没有答案被接受。