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

Laravel 8 提交textarea表单后数据库无更新 该如何排查解决?

问题根源

你提交的表单中没有携带需要更新的infos表记录ID,控制器的更新逻辑中where('id', $request->id)匹配不到对应记录,因此不会执行任何数据库修改操作。

修复步骤

  • 第一步:在表单中添加隐藏ID字段
    打开infoupdate.blade.view文件,在<form>标签内部添加隐藏输入框,传递当前编辑的记录ID:
<form action="{{ route('updateinfo') }}" method="POST">
    @method('PUT')
    @csrf
    <!-- 新增隐藏ID字段 -->
    <input type="hidden" name="id" value="{{ $infos->id }}">
    <!-- 其余原有表单代码保持不变 -->
</form>
  • 第二步(可选优化,更符合Laravel开发规范):调整路由参数传递逻辑
    你也可以将ID放在路由路径中,避免通过表单隐藏字段传递,降低传参错误概率:
  1. 修改web.php中的更新路由,增加ID参数:
Route::put('/updateinfo/{id}',[DBIController::class,  'update'])->middleware('admin')->name('updateinfo');
  1. 修改表单的action属性,传递ID参数:
<form action="{{ route('updateinfo', $infos->id) }}" method="POST">
  1. 修改控制器update方法,直接接收路由中的ID参数:
public function update(Request $request, $id){
    $request->validate([
        'contentInfo' => 'required|min:16'
    ]);
    DB::table('infos')->where('id', $id)->update([
        'contentInfo' => $request->contentInfo
    ]);
    return redirect()->route('DBI')->with('message','Data Pengumuman Berhasil di Update');
}

其他可排查场景

如果修改后仍然不生效,可以按以下顺序排查:

  1. 在控制器update方法开头添加dd($request->all()),提交表单后查看是否正常返回id和contentInfo参数,确认参数传递无误
  2. 检查contentInfo提交的内容是否和数据库原有内容完全一致,Laravel的更新操作会自动跳过无变更的记录,此时不会报错也不会修改数据库
  3. 确认当前登录的账号满足admin中间件的权限要求,不会被中间件拦截请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:54:03