和模型新增一样,更新操作同样也会经过修改器、自动完成以及模型事件等处理,并不等同于数据库的数据更新,而且更新方法和新增方法使用的是同一个方法,通常系统会自动判断需要新增还是更新数据。
## 查找并更新
在取出数据后,更改字段内容后使用`save`方法更新数据。**这种方式是最佳的更新方式**。
~~~
$user = User::get(1);
$user->name = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
~~~
> `save`方法返回影响的记录数,并只有当`before_update`事件返回`false`的时候返回`false`,从`V5.1.6+`版本开始统一返回布尔值
对于复杂的查询条件,也可以使用查询构造器来查询数据并更新
~~~php
$user = User::where('status',1)
->where('name','liuchen')
->find();
$user->name = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
~~~
`save`方法更新数据,只会更新变化的数据,对于没有变化