首先请原谅更糟糕的代码,我对PHP / Symfony / Doctrine比较陌生。
我想用下面的代码实现的目的如下,我需要更新最后一个DB条目的'Notification_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中进行第二次查询,而不是像我一样使用查询功能?
答案 0 :(得分:0)
通过以下方式管理以使其正常运行:
$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"));
感谢那些帮助我的人。