跳到主要内容
PHP

Laravel update 更新

扣

扣丁禅师

https://learnku.com/laravel/t/51778

2022年08月29日 2,738 次阅读
本页目录

通常我们更新数据有以下几种方法:

方法 1

$model = Model::find($id);
$model->field1 = $value1;
$model->field2 = $value2;
$model->save();

方法 2

Model::find($id)
    ->update([
        'field1' => $value1,
        'field2' => $value2,
    ]);

方法 3

Model::query()
    ->where('id', $id)
    ->update([
        'field1' => $value1,
        'field2' => $value2,
    ]);

三种方法都可以更新数据,如果是你,你会选择哪种方法?或者说哪个方法是性能最好的?


以下为更新内容,揭晓答案:

性能最佳的答案是 3,方法 3 仅生成一条 SQL 如下:

update table set field1=value1, field2=value2 where id = $id;

方法 1,方法 2,都是形成两条 SQL,会多一次查询语句:

select * from table where id = $id limit 1;
update table set field1=value1, field2=value2 where id = $id;

@Imuyu 提到 find 可能返回空,也是个值得注意的地方,直接 update 没有 id 也就没有更新内容了,也会减少一次判断。

注意:通过 Eloquent 批量更新update时,不会触发模型的 saving、saved、updating 和 updated 模型事件。 这是因为在批量更新时从未真正检索到模型。 
 

 

Related

相关文章

同分类文章 →
2026年07月11日 PHP

laravel什么样的方法适合放在模型中?什么适合用专门的服务类? cachedFavIds适合放在模型中吗?

一、适合放在模型中的方法Laravel 采用 ActiveRecord 风格,模型本身就是"数据 + 围绕该数据的操作"的载体。以下几类方法适合放模型: 关联关系:belongsTo、morphTo、hasMany 等。如 UserFav::userfavable()、UserFav::us

2026年04月13日 PHP

Vue3 静态文件放在同域名 Laravel 项目下

核心思路是:Vue3 构建后的静态文件放到 Laravel 的 public/ 目录下,通过 Laravel 路由的 catch-all 机制让 SPA 的前端路由正常工作。方案说明以 xx.com/admin 为例,整体架构如下:请求流程:xx.com/admin/* → Laravel

2025年08月18日 PHP

Laravel Eloquent 中可以通过静态方式调用的方法

在 Laravel Eloquent 中,可以通过静态方式调用的方法包括:1. 查询作用域 (Scopes)// 可以静态调用UserComment::active()->get();UserComment::where('status', 1)->first();2. Eloquent 内置的查询方法UserComment::fi

WeChat

扫码加我微信

微信二维码