模型静态调用 update 的返回值疑问

浏览:1375 发布日期:2018/03/01 分类:ThinkPHP5专区
版本:5.1.5
问题描述:
有一个 User 模型,在控制器中使用如下的更新代码:User::update([
    'nickname'  => 'hello2',
], ['id' => 1]);
var_dump($user);
文档 https://www.kancloud.cn/thinkphp/master-database-and-model/265556 说该方法返回模型的对象实例,实际效果为:C:\wamp64\www\tshop\application\index\controller\Index.php:13:
object(app\admin\model\User)[20]
  public 'data' => 
    array (size=2)
      'nickname' => string 'hello2' (length=6)
      'update_time' => int 1519888810
  public 'relation' => 
    array (size=0)
      empty
返回的是一个 User 模型对象实例,但里面只有 nickname 和 update_time 两个更新过数据的记录。
然后修改执行下面的查询语句:$user = User::update(['nickname' => 'hello1'], [['id', '<', 3]]);
 var_dump($user);
返回值与上面基本一样,实际上这条语句修改了两条记录。

我觉得 update 返回值改为影响的记录数更实用。像上面那样返回一个对象实例,data 的值只有修改过的字段,如果影响多条记录也只返回一个对象,有些不实用。

PS: 这种情况怎样获得影响的记录数?
而且$user = User::update(['nickname' => 'hello1', 'emailllllll' => 'test@qq.com'], ['id', 1]); 中 'emailllllll' 是数据表中不存在的字段名,代码执行以后,返回的 $User 对象含有 'emailllllll' 属性,所以这个返回值好像作用不大,没什么场合会用到它。
最佳答案
评论( 相关
后面还有条评论,点击查看>>