diff --git a/library/think/Model.php b/library/think/Model.php index 92b49037..31caed62 100644 --- a/library/think/Model.php +++ b/library/think/Model.php @@ -586,7 +586,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess } $result = $this->db()->where($where)->update($data); - + // 清空change + $this->change = []; // 更新回调 $this->trigger('after_update', $this); } else { @@ -613,16 +614,14 @@ abstract class Model implements \JsonSerializable, \ArrayAccess } $result = $insertId; } + // 标记为更新 + $this->isUpdate = true; // 新增回调 $this->trigger('after_insert', $this); } // 写入回调 $this->trigger('after_write', $this); - - // 标记为更新 - $this->isUpdate = true; - // 清空change - $this->change = []; + return $result; } diff --git a/library/think/model/Merge.php b/library/think/model/Merge.php index 3da4fc07..69ef91c5 100644 --- a/library/think/model/Merge.php +++ b/library/think/model/Merge.php @@ -183,10 +183,21 @@ class Merge extends Model return false; } + if (empty($where) && !empty($this->updateWhere)) { + $where = $this->updateWhere; + } + + if (!empty($where)) { + $pk = $this->getPk(); + if (is_string($pk) && isset($data[$pk])) { + unset($data[$pk]); + } + } + // 处理模型数据 $data = $this->parseData($this->name, $this->data); // 写入主表数据 - $result = $db->strict(false)->update($data); + $result = $db->strict(false)->where($where)->update($data); // 写入附表数据 foreach (static::$relationModel as $key => $model) {