如何判断 update 是否成功?

update一条信息

  1. 返回0什么意思?
  2. 返回1什么意思?
  3. 如何判断是否更新成功呢?
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

可以看一下 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 '保存成功'} 这样来。

7年前 评论
讨论数量: 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 '保存成功'} 这样来。

7年前 评论

可以看一下 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 '保存成功'} 这样来。

7年前 评论

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

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

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!