问题一:循环更新时只有第一条数据更新成功,其它数据都不更新。
官方手册中提到
注意不要在一个模型实例里面做多次更新,会导致部分重复数据不再更新,正确的方式应该是先查询后更新或者使用模型类的update方法更新。
只是说明了问题,但没有解释为什么,所以就没注意,导致出现这个问题。
为什么会有这个问题?
在Model.php模型save方法最后大概1214行
// 重新记录原始数据
$this->origin = $this->data;
origin这个属性记录了原始数据,不管是更新还是写入,都把操作的字段给记录下来了。
而在1105行调用的方法
// 获取有更新的数据
$data = $this->getChangedData();
1266行
//force强制更新就不会比对,这个是文档没有提到的
if ($this->force) {
$data = $this->data;<