我正在使用Doctrine 2。
我想获取实体类的所有实体,除了id = 0的实体。
我可以像这样使用QueryBuilder:
// $em is EntityManager
$em->createQueryBuilder()
->select('c')
->from('Category', 'c')
->where('c.id <> 0')
->getQuery()
->getResult();
但是看看这段代码,对于这么简单的任务感觉太过分了。 我很想知道Doctrine中是否还有其他更简单的方法可以做到这一点。
答案 0 :(得分:5)
$em->createQuery("SELECT c FROM Category c WHERE c.id != 0")->getResult();
答案 1 :(得分:0)
传递ID号不是更好的做法,你可以像这样传递Category对象:
public function findAllExcept($category) {
$qb = $this->createQueryBuilder('Category');
$qb->add('select', 'c')
->add('from', 'Category c')
->add('where', 'c != :category')
->setParameter('category', $category);
return $qb->getQuery()->getResult();
}
答案 2 :(得分:0)
对于比较和条件,我建议也使用Doctrine。如果在数据库之间切换,例如从MySQL切换到PostgreSQL,它将节省您的时间:
$this->createQueryBuilder()
->select('c')
->from('Category', 'c')
->where($qb->expr()->neq('c.id', '?1'))
->setParameter('1', $category)
->getQuery()
->getResult()