updateOrCreate 这个到底咋用的啊

我再提交一次相同的数据,他还是给我插入一条新的数据而不是更新,

文档看得不太懂,

望大佬们 指点下~~

阅读 10.9k
2 个回答

很多时候看源码就能明白,源码如下:

    public function updateOrCreate(array $attributes, array $values = [])
    {
        $instance = $this->firstOrNew($attributes);

        $instance->fill($values)->save();

        return $instance;
    }

参数 $attributes 是 where 条件,根据 $attributes 参数去数据库匹配是否有相关数据,如果没有则新建数据,有就查询出来。

然后再 fill 参数 values 的值去保存。

//以id来查找,如果有的话就修改更新,没有的话就create

            $create_bool =Logistics::updateOrCreate([
                'id' => $model['id'],
            ],[
                'a' => $model['a'],
                'b' => $model['b'],
                'c' => $model['c'],
                'd' => $model['d'],
                'e' => $model['e'],
            ]);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题