Laravel update 更新
作者:扣丁禅师 来源:learnku.com 发布时间:2022-08-29 19:09
通常我们更新数据有以下几种方法:
方法 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
模型事件。 这是因为在批量更新时从未真正检索到模型。
更新时间:2024-12-18 20:26