You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel更新模型后返回完整模型数据的实现问题

解决Laravel更新后返回完整Model数据的问题

问题原因

你当前使用的Category::where('id', $id)->update(...)方法,返回的是受影响的数据库行数(也就是你看到的1),而非更新后的模型实例。同时你的$category变量大概率未被正确赋值为更新后的模型,导致返回结果不符合预期。

解决方案

方案1:先获取模型实例再更新(推荐)

这种方式更贴合Laravel的Eloquent用法,更新后直接持有最新的模型实例:

// 通过ID查询获取模型实例,找不到则抛出404异常
$category = Category::findOrFail($id);

// 批量更新字段(需确保Category模型设置了$fillable白名单)
$category->update($request->only(['title', 'slug', 'is_home', 'language', 'status']));

// 返回更新后的完整模型数据
return response()->json($category);

注意:需要在Category模型中配置可批量赋值的字段白名单:

class Category extends Model
{
    protected $fillable = ['title', 'slug', 'is_home', 'language', 'status'];
}

方案2:更新后重新查询模型

如果坚持使用where()链式更新,更新完成后重新查询数据库获取最新数据:

// 执行更新操作
Category::where('id', $id)->update([
    'title' => $request->title,
    'slug' => $request->slug,
    'is_home' => $request->is_home,
    'language' => $request->language,
    'status' => $request->status,
]);

// 重新查询获取更新后的模型
$category = Category::findOrFail($id);

// 返回完整数据
return response()->json($category);

内容的提问来源于stack exchange,提问作者kralyolda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:30:53