首先,请原谅更多较差的代码,我对PHP / Symfony / Doctrine还是比较陌生。
我要使用以下代码尝试实现的目标如下,我需要更新最后一个数据库条目的“ Notification_ID”字段。现在,代码的上半部分正在检索最后一个数据库条目的ID,然后我可以在代码的后半部分中检索该ID,然后将通知ID(通过POST传入)添加到该数据库条目。
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT z.id
FROM AppBundle:ZeusUsers z
ORDER BY z.id DESC');
$query->setMaxResults(1);
$id = $query->getSingleScalarResult();
$notificationid = $this->getRequest()->get("notification_id");
$query = $em->createQuery(
'UPDATE AppBundle:ZeusUsers z
SET z.notification_id = $notificationid
WHERE z.id = $id');
$query->execute();
$em->flush();
return new Response("", 200, array("content-type"=>"text/html"));
上面更新了代码
现在这将返回以下错误:
[Syntax Error] line 0, col 57: Error: Expected Literal, got '$' (500 Internal Server Error)
似乎从查询外部引用变量存在问题,有什么想法吗?
我将如何在本机Symfony中进行第二次查询,而不是使用像我这样的查询函数?
最佳答案
设法使其具有以下功能:
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT z.id
FROM AppBundle:ZeusUsers z
ORDER BY z.id DESC');
$query->setMaxResults(1);
$id = $query->getSingleScalarResult();
$notification_id = $this->getRequest()->get("notification_id");
$query1 = $em->createQueryBuilder();
$q = $query1->update('AppBundle:ZeusUsers', 'z')
->set('z.notification_id', '?1')
->where('z.id = ?2')
->setParameter(1, $notification_id)
->setParameter(2, $id)
->getQuery();
$p = $q->execute();
return new Response("", 200, array("content-type"=>"text/html"));
感谢您为我提供帮助的人。