【问题标题】:How to get the value of an UPDATE ... RETURNING query in postgreSQL in Doctrine DBAL如何在 Doctrine DBAL 中的 postgreSQL 中获取 UPDATE ... RETURNING 查询的值
【发布时间】:2015-11-09 23:40:41
【问题描述】:

我正在尝试使用这个与 Doctrine DBAL 一起使用的正确 postgreSQL 查询,但到目前为止我没有成功,查询是:

UPDATE table SET field = field + 1 WHERE id = ? RETURNING field AS fieldName;

查询工作正常,但尝试从 RETURNING 子句恢复值我发现无法从 DBAL 中的查询结果中获取该值。

我尝试了 getLastInsertedIdfieldName 值和调用本身的返回值,但没有运气。有谁知道这样做的方法吗?

谢谢

【问题讨论】:

  • 通常,您为使用 DB 抽象层付出的代价是无法访问底层数据库的所有功能。它可能有一些有限的方法来获取单个生成的密钥。
  • 是的,我知道这一点,但我之所以问,是因为我可能遗漏了一些东西,并且有办法检索该信息。
  • 大概你正在使用executeUpdate()。试试executeQuery(),就好像它是一个SELECT。
  • 是的,我使用executeUpdate(),抱歉我没有这么说。但是 executeQuery() 返回一个 PDOStatement 对象,它只包含我发送的相同查询字符串。但是谢谢伙计!
  • 好的,我找到了解决方案。我现在发布它

标签: php postgresql doctrine-orm dbal


【解决方案1】:

好的,经过一番斗争并在 @daniel-v%c3%a9rit%c3%a9 的帮助下,我找到了解决方法。

要在更新后检索数据并在 postgres 中返回,您必须执行如下查询:

$statement = $conn->executeQuery($sql, $params);
$statement->fetchAll();

这样,您只需一个查询即可进行更新并获得最后一个更新的值。

【讨论】:

    猜你喜欢
    • 2021-03-25
    • 1970-01-01
    • 2018-03-30
    • 2015-11-09
    • 2015-06-04
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多