如何获取在PostgreSQL中的更新...返回查询在Doctrine DBAL中的值
问题描述:
我想使用这个正确的postgreSQL查询与Doctrine DBAL一起工作,但到目前为止我没有成功,查询是:如何获取在PostgreSQL中的更新...返回查询在Doctrine DBAL中的值
UPDATE table SET field = field + 1 WHERE id = ? RETURNING field AS fieldName;
该查询工作正常,但试图从RETURNING子句中恢复值我发现没有办法从DBAL中的查询结果中获取此值。
我试图getLastInsertedId与字段名值和调用的返回值本身,但没有运气。任何人都知道这样做的方法?
感谢
答
好了,打了一点后,用@丹尼尔-V的帮助%C3%a9rit%C3%A9我找到了办法做到这一点。与你做的更新只有一个查询
$statement = $conn->executeQuery($sql, $params);
$statement->fetchAll();
这种方式,并得到更新的最后一个值:
要在Postgres的恢复必须执行这样的查询检索更新后的数据。
通常,使用数据库抽象层支付的价格无法访问底层数据库的所有功能。它可能只有一些有限的方法来获得单个生成的密钥。 –
是的,我意识到这一点,但我问了,因为也许有一些我错过了,并有一种方法来检索该信息。 – Khriz
推测你使用'executeUpdate()'。尝试使用'executeQuery()',就好像它是一个SELECT。 –