【问题标题】:Symfony & Doctrine Pulling ID from DBSymfony 和 Doctrine 从 DB 中提取 ID
【发布时间】:2015-03-23 23:42:15
【问题描述】:

我正在尝试编写一个函数,该函数在调用时会将最新条目的 ID 返回到我的数据库中。我对 PHP 还很陌生,所以请原谅我糟糕的代码。

public function devicesFunctionAction()
{   
    $em = $this->getDoctrine()->getManager();
    $query = $em->createQuery(
      'SELECT id 
      FROM AppBundle:ZeusUsers
      ORDER BY id DESC');
    $id = $query->getResult();
    $query->setMaxResults(1);

    return new Response(json_encode(array('key' => $id)));
}

上面的代码会产生一个 500 错误,但它似乎是 'BY' 导致的:

[语法错误] line 0, col 48: Error: Expected end of string, got 'BY'(500 内部服务器错误)

阅读 Doctrine 文档后,他们在示例中使用了“ORDER BY”,所以我不明白为什么会导致这样的问题。

任何帮助将不胜感激,如果这还不够,可以轻松提供更多信息。

【问题讨论】:

    标签: php sql symfony doctrine


    【解决方案1】:

    这不是纯 SQL,除非你使用 $connection->prepare() 和 execute(),否则你不能像这样使用教义,但要回答你的问题,请像这样使用它:

        $em = $this->getDoctrine()->getManager();
        $query = $em->createQuery(
          'SELECT z.id
          FROM AppBundle:ZeusUsers z
          ORDER BY z.id DESC');
        $query->setMaxResults(1); // and setMaxResults(1) before getResult() obvisouly :p
        $id = $query->getSingleScalarResult();
    

    已编辑。

    【讨论】:

    • 现在可以了,但是它会输出:{"key":[{}]} - 知道为什么它没有 ID 吗?
    • 结果应该是 ZeusUsers 类型的对象,如果 id 是你想要的,你应该使用不同的查询,稍微改一下 :)
    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-24
    • 1970-01-01
    相关资源
    最近更新 更多