如何获取在PostgreSQL中的更新...返回查询在Doctrine DBAL中的值

问题描述:

我想使用这个正确的postgreSQL查询与Doctrine DBAL一起工作,但到目前为止我没有成功,查询是:如何获取在PostgreSQL中的更新...返回查询在Doctrine DBAL中的值

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

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

我试图getLastInsertedId字段名值和调用的返回值本身,但没有运气。任何人都知道这样做的方法?

感谢

+1

通常,使用数据库抽象层支付的价格无法访问底层数据库的所有功能。它可能只有一些有限的方法来获得单个生成的密钥。 –

+1

是的,我意识到这一点,但我问了,因为也许有一些我错过了,并有一种方法来检索该信息。 – Khriz

+1

推测你使用'executeUpdate()'。尝试使用'executeQuery()',就好像它是一个SELECT。 –

好了,打了一点后,用@丹尼尔-V的帮助%C3%a9rit%C3%A9我找到了办法做到这一点。与你做的更新只有一个查询

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

这种方式,并得到更新的最后一个值:

要在Postgres的恢复必须执行这样的查询检索更新后的数据。