在推进中有这个doUpdate函数,它将通过此查询返回受影响行的数量。
问题是,如果不需要更新行(因为set
值已经与字段值相同),那些行会被计为受影响的行吗?
举个例子,我有下表:
ID | Name | Books
1 | S1oon | Me
2 | S1oon | Me
让我们假设我编写了一个等效于以下查询的ORM函数:
update `new table` set
Books='Me'
where Name='S1oon';
doUpdate
结果会返回什么?它会返回0(因为所有Books
列都已经Me
,因此无需更新),或者它将是2(因为有2行符合where
条件)?
答案 0 :(得分:2)
在幕后,Propel正在使用PDO的 PDOStatement :: rowCount()方法来返回受影响的行数。所以,简短的回答是你会得到你想象的“2”,但更长的答案是它可能略微取决于PDO如何为你的特定数据库实现该功能。 (我想如果你没有得到2,那么它应该是PDO的一个bug。)
有关详细信息,请参阅the description of rowCount() in the PHP manual。
要记住的另一件事是当Propel调用预期会返回行数的方法(如 save()或 delete())时 - 修改并且可能导致修改多行(例如,如果您添加一本书及其作者,然后通过调用 book-> save()导致两者都被插入),您将获取总修改的行数。
答案 1 :(得分:0)
它将返回2.