使用Symfony&更新最后一个数据库条目教义

时间:2015-03-31 18:28:30

标签: php mysql symfony doctrine

首先请原谅更糟糕的代码,我对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中进行第二次查询,而不是像我一样使用查询功能?

1 个答案:

答案 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"));

感谢那些帮助我的人。