Doctrine 2:使用查询生成器更新查询 [英] Doctrine 2: Update query with query builder
本文介绍了Doctrine 2:使用查询生成器更新查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好
我有以下查询,但它似乎不工作。
Hi I've got the following query but it doesn't seem to work.
$q = $this->em->createQueryBuilder()
->update('models\User', 'u')
->set('u.username', $username)
->set('u.email', $email)
->where('u.id = ?1')
->setParameter(1, $editId)
->getQuery();
$p = $q->execute();
这会返回以下错误消息:
This returns the following error message:
致命错误:未捕获异常
'Doctrine\ORM\Query\QueryException'
消息'[语义错误]行
0,col 38 near 'testusername WHERE':
错误:'testusername'未定义。
in ...
Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message '[Semantical Error] line 0, col 38 near 'testusername WHERE': Error: 'testusername' is not defined.' in ...
我会很高兴任何帮助
推荐答案
我认为你需要使用 Expr
与 - > set()
:
$qb = $this->em->createQueryBuilder();
$q = $qb->update('models\User', 'u')
->set('u.username', $qb->expr()->literal($username))
->set('u.email', $qb->expr()->literal($email))
->where('u.id = ?1')
->setParameter(1, $editId)
->getQuery();
$p = $q->execute();
或者将所有的值参数:
$qb = $this->em->createQueryBuilder();
$q = $qb->update('models\User', 'u')
->set('u.username', '?1')
->set('u.email', '?2')
->where('u.id = ?3')
->setParameter(1, $username)
->setParameter(2, $email)
->setParameter(3, $editId)
->getQuery();
$p = $q->execute();
这篇关于Doctrine 2:使用查询生成器更新查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文