Car*_*rlM 68 php sql database doctrine
嗨,我有以下查询但它似乎不起作用.
$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();
Run Code Online (Sandbox Code Playgroud)
这将返回以下错误消息:
致命错误:未捕获异常'Doctrine\ORM\Query\QueryException',消息'[Semantical Error]第0行,第38位'testusername WHERE'附近:错误:'testusername'未定义.在......
我会很高兴有任何帮助
roj*_*oca 135
我认为你需要使用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();
Run Code Online (Sandbox Code Playgroud)
无论是那个还是制作所有的值参数:
$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();
Run Code Online (Sandbox Code Playgroud)
假设您有一些后端显示用户列表(可由几个可能对用户详细信息具有读/写访问权限的管理员访问).
在那里,您可以在自己的行上打印用户ID作为数据属性,以便在某些事件被触发时从Javascript中检索它.
然后可以通过这种方式执行更新......
class UserRepository extends \Doctrine\ORM\EntityRepository
{
public function updateUserStatus($userId, $newStatus)
{
return $this->createQueryBuilder('u')
->update()
->set('u.isActive', '?1')
->setParameter(1, $qb->expr()->literal($newStatus))
->where('u.id = ?2')
->setParameter(2, $qb->expr()->literal($userId))
->getQuery()
->getSingleScalarResult()
;
}
Run Code Online (Sandbox Code Playgroud)
在(ajax)处理行动中......
# Post datas may be:
# handled with a specific custom formType — OR — retrieved from request object
$userId = (int)$request->request->get('userId');
$newStatus = (int)$request->request->get('newStatus');
$em = $this->getDoctrine()->getManager();
$r = $em->getRepository('NAMESPACE\User')
->updateUserStatus($userId, $newStatus);
if ( !empty($r) ){
# Row updated
}
Run Code Online (Sandbox Code Playgroud)
使用Doctrine 2.5的工作示例(在Symfony3之上).
归档时间: |
|
查看次数: |
117250 次 |
最近记录: |