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
相关产品推荐
相关产品推荐

