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

Laravel 8使用PUT方法更新数据无报错无变化如何解决

问题原因及解决方案

原因1:资源路由参数与控制器注入参数不匹配

Laravel 资源路由会根据路由前缀自动生成参数名,你定义的路由为Route::resource('index', TaskController::class),生成的更新路由参数为{index},而控制器update方法中注入的参数是Task $task,参数名不一致导致隐式模型注入失效,此时$task是未关联任何数据库记录的空模型实例,调用update方法自然不会修改数据。

解决方案(二选一即可)

  • 修改控制器参数名,和路由生成的参数保持一致:
// TaskController.php
public function update(Request $request, Task $index)
{
    // 原有逻辑不变
}
  • 显式指定资源路由的参数名,匹配控制器注入参数:
// web.php
Route::resource('index', TaskController::class)->parameters([
    'index' => 'task'
]);

原因2:Task模型未开启content字段的批量赋值权限

Laravel 默认会静默过滤未在模型$fillable属性中声明的字段,你直接调用$task->update($request->all())时,如果content字段没有加入$fillable,赋值操作会被跳过,不会抛出报错。

解决方案

在app/Models/Task.php中添加content字段到批量赋值白名单:

// Task 模型类内添加
protected $fillable = ['content'];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:39:02