如何判断 update 是否成功?

update 一条信息

  1. 返回 0 什么意思?
  2. 返回 1 什么意思?
  3. 如何判断是否更新成功呢?
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

可以看一下 update 方法的源码,如下:

    public function update(array $attributes = [], array $options = [])
    {
        if (! $this->exists) {
            return false;
        }

        return $this->fill($attributes)->save($options);
    }
  1. 如果该对象不存在,直接返回 false。
  2. 否则调用 fill 和 save 方法。
  3. 其实返回的是 save 的执行结果
  4. 而 save 在 5.3 之前(不含 5.3)保存成功一律返回 true。但是 5.3 开始,如果该保存没有更改任何数据库内容则也返回 false。save 行为变更文档
  5. 然而在 5.3.16 开始,只要 save 保存成功都是返回 true,不会因为没有内容变更而返回 false 。如下图( 这样来回变 save 和 update 可能要死人啊 :crying_cat_face:

file

6. 各类的模型监听如 saving updating 等将可能改变更新的返回值。

7.if($user->update(['name'=>'839891627'])) {return '保存成功'} 这样来。

8年前 评论
讨论数量: 3

可以看一下 update 方法的源码,如下:

    public function update(array $attributes = [], array $options = [])
    {
        if (! $this->exists) {
            return false;
        }

        return $this->fill($attributes)->save($options);
    }
  1. 如果该对象不存在,直接返回 false。
  2. 否则调用 fill 和 save 方法。
  3. 其实返回的是 save 的执行结果
  4. 而 save 在 5.3 之前(不含 5.3)保存成功一律返回 true。但是 5.3 开始,如果该保存没有更改任何数据库内容则也返回 false。save 行为变更文档
  5. 然而在 5.3.16 开始,只要 save 保存成功都是返回 true,不会因为没有内容变更而返回 false 。如下图( 这样来回变 save 和 update 可能要死人啊 :crying_cat_face:

file

6. 各类的模型监听如 saving updating 等将可能改变更新的返回值。

7.if($user->update(['name'=>'839891627'])) {return '保存成功'} 这样来。

8年前 评论

可以看一下 update 方法的源码,如下:

    public function update(array $attributes = [], array $options = [])
    {
        if (! $this->exists) {
            return false;
        }

        return $this->fill($attributes)->save($options);
    }
  1. 如果该对象不存在,直接返回 false。
  2. 否则调用 fill 和 save 方法。
  3. 其实返回的是 save 的执行结果
  4. 而 save 在 5.3 之前(不含 5.3)保存成功一律返回 true。但是 5.3 开始,如果该保存没有更改任何数据库内容则也返回 false。save 行为变更文档
  5. 然而在 5.3.16 开始,只要 save 保存成功都是返回 true,不会因为没有内容变更而返回 false 。如下图( 这样来回变 save 和 update 可能要死人啊 :crying_cat_face:

file

6. 各类的模型监听如 saving updating 等将可能改变更新的返回值。

7.if($user->update(['name'=>'839891627'])) {return '保存成功'} 这样来。

8年前 评论

在 5.2 版本中返回的是 0,那其实 Laravel 的 model 层中可以设置更新时间的变化,每次时间都是变化更新的,所以返回值不会出现 0 了。

   /**
     * 开启自动维护updated_at、created_at字段
     *
     * @var boolean
     */
    public $timestamps = true;

    /**
     * 实用时间戳格式
     */
    protected $dateFormat = 'U';
7年前 评论