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

Laravel 9数据更新失败求助:提交表单后数据未变更

Laravel 9 数据更新失败排查方案
  • 先确认请求参数是否有效
    把dd($request)移到数据库更新代码之前,执行后查看id、id_bb、nama_bb、stok这些字段是否有正确的值。如果某个字段为空或不符合预期,检查表单是否正确提交了对应字段:

    • 确保表单包含id的隐藏输入项:<input type="hidden" name="id" value="{{ $data->id }}">
    • 表单提交方法需为PUT/PATCH,如果是POST表单,要添加@method('PUT')指令,否则无法触发update路由逻辑。
  • 检查路由配置
    确认你的更新路由是否正确配置:

    • 若用资源路由:Route::resource('bahanbaku', YourController::class),默认更新路由是PUT /bahanbaku/{bahanbaku},此时控制器方法应接收模型参数或从路由参数获取id,而非从request取id。
    • 若用自定义路由:需明确指定请求方法为PUT/PATCH,比如Route::put('/bahanbaku/update', [YourController::class, 'update'])。
  • 验证数据库查询是否命中记录
    执行更新后,打印受影响行数确认是否有记录被修改:

    $affected = DB::table('bahanbaku')->where('id', $request->id)->update([
        'id_bb' => $request->id_bb,
        'nama_bb' => $request->nama_bb,
        'stok' => $request->stok
    ]);
    dd($affected); // 输出0表示where条件未匹配到任何记录
    

    如果输出0,检查$request->id的值是否对应数据库中存在的记录,或者id字段是否为表的主键。

  • 排查数据库约束与字段问题

    • 检查表字段名是否与代码中一致,比如id_bb、nama_bb是否拼写正确,注意大小写和下划线。
    • 若id_bb是唯一索引,确认新值是否与现有记录冲突,冲突会导致更新失败且无报错(除非捕获异常)。可以添加异常捕获查看具体错误:
      try {
          DB::table('bahanbaku')->where('id', $request->id)->update([
              'id_bb' => $request->id_bb,
              'nama_bb' => $request->nama_bb,
              'stok' => $request->stok
          ]);
      } catch (\Exception $e) {
          dd($e->getMessage());
      }
      
  • 确认CSRF验证通过
    表单中必须包含@csrf指令,否则Laravel会返回419状态码拒绝请求,导致更新代码未执行。查看浏览器开发者工具的网络请求,确认请求状态码为200。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:24:26