主义2,更新值切换

时间:2016-02-07 15:55:06

标签: doctrine-orm

使用原生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();

没有运气

1 个答案:

答案 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的