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

Laravel中Oil数据更新功能失效问题排查与修复请求

问题修复方案

1. 修正路由定义错误

你的update路由在prefix('oil')的分组里重复添加了/oil/{id},导致最终路由路径变为/oil/oil/{id},和表单生成的URL不匹配,请求无法正确命中update方法。修改路由如下:

Route::controller(OilController::class)->prefix('oil')->group(function () {
    Route::get('', 'index')->name('oil');
    Route::get('show/{id}', 'show')->name('oil.show');
    Route::get('/{id}/edit', [OilController::class, 'edit'])->name('oil.edit');
    // 移除重复的/oil前缀,直接定义/{id}
    Route::put('/{id}', [OilController::class, 'update'])->name('oil.update');
    Route::delete('destroy/{id}', 'destroy')->name('oil.destroy');
});

2. 修正控制器update方法的查询逻辑

当前代码用$request->id查询数据,但表单未提交id字段,导致无法找到对应Oil记录,更新操作失效。改为使用路由参数$id查询:

public function update(Request $request, $id)
{
    $validatedData = $request->validate([
        // 原有验证规则保持不变
    ]);

    // 使用路由参数$id获取对应记录
    $oil = Oil::findOrFail($id);
    $oil->update($validatedData);

    // 跳转至列表页(对应name为oil的路由)
    return redirect()->route('oil')->with('success', 'Oil details updated successfully');
}

3. 修正跳转目标

你原本跳转的oil.show路由需要{id}参数,且为详情页,并非预期的列表页。改为跳转到列表页路由oil即可实现需求。

额外优化建议

  • 表单添加错误提示,方便用户定位验证问题:
    <input type="text" name="{{ $column }}" value="{{ $oil->{$column} }}" class="form-control @error($column) is-invalid @enderror">
    @error($column)
        <div class="invalid-feedback">{{ $message }}</div>
    @enderror
    
  • 动态生成验证规则,减少重复代码:
    $rules = [];
    $columns = Schema::getColumnListing('condem');
    $columns = array_diff($columns, ['condemID', 'modelID']);
    
    foreach ($columns as $col) {
        if (str_ends_with($col, ['min', 'max', 'border', 'per'])) {
            $rules[$col] = 'required|numeric';
        } elseif (str_ends_with($col, 'ket')) {
            $rules[$col] = 'required|string';
        }
    }
    
    $validatedData = $request->validate($rules);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:52:01