首先,请原谅更多较差的代码,我对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"));


感谢您为我提供帮助的人。

10-05 20:28