使用原生SQL:
UPDATE a SET active = NOT active WHERE id = 1
如何使用Doctrine2构建器编写此代码?我试过了:
$q = $this->createQueryBuilder('a');
$q->update()->set('a.active', $q->expr()->not('a.active'))->getQuery()->execute();
没有运气
答案 0 :(得分:1)
我认为你需要类似的东西,对于实体:
$qb = $this->em->createQueryBuilder();
$q = $qb->update('models\A', 'a')
->set('a.active', $qb->expr()->not('a.active'))
->where('a.id = ?1')
->setParameter(1, $id)
->getQuery();
$p = $q->execute();
对于本机SQL:
use Doctrine\ORM\Query\ResultSetMapping;
$rsm = new ResultSetMapping();
$q = $this->em->createNativeQuery('UPDATE a SET active = NOT active WHERE id = ?', $rsm);
$q->setParameter(1, $id);
$q->exectute();
对于没有实体管理器的本机查询,您可以使用:
\学说\ DBAL \查询\ QueryBuilder的