Laravel预约web应用审批功能提交后数据库字段未更新问题求助
问题根因&修复方案
1. 核心语法错误:赋值运算符误用
你在控制器中更新is_booking字段时,错误使用了**比较运算符==**而非赋值运算符=,代码实际执行的是「判断字段是否等于1」的逻辑,完全没有对字段做赋值修改,这是数据库字段不更新的最主要原因:
// 错误写法:双等号是比较,不会修改属性值 $bookingstatus->is_booking==1; // 修正为单等号赋值 $bookingstatus->is_booking = 1;
2. 预约记录查询逻辑错误
你的路由已经通过路径参数{id}传递了预约ID,控制器方法也已经接收了$id参数,但查询时错误使用了$request->id,如果表单未提交name为id的字段,$request->id会返回null,导致无法匹配到对应的预约记录。
推荐直接用路由参数查询,同时增加异常捕获处理不存在的预约ID:
// 原错误写法 $bookingstatus=Bookings::where('id',$request->id)->first(); // 修正写法 $bookingstatus = Bookings::findOrFail($id);
3. 可选检查项:模型可赋值字段配置
请确认你的Bookings模型的$fillable属性中已经添加了is_booking字段,否则Laravel的字段保护机制会自动过滤该字段的赋值操作,导致保存失败:
// Bookings.php模型中配置 protected $fillable = [ // 其他原有可赋值字段 'is_booking', ];
修正后完整控制器方法参考
public function update(Request $request, $id) { $bookingstatus = Bookings::findOrFail($id); if($bookingstatus->is_booking == 0) { $bookingstatus->is_booking = 1; $saveResult = $bookingstatus->save(); // 仅保存成功才返回成功提示 if ($saveResult) { return redirect()->back()->with('success','The Booking has successfully been Approved to the accountant'); } return redirect()->back()->with('error','审批操作失败,请重试'); } return redirect()->back()->with('error','该预约状态不允许审批'); }
内容的提问来源于stack exchange,提问作者stephen waweru99
相关产品推荐
相关产品推荐

