Laravel框架下Eloquent提交表单无法正常写入数据库问题求助
问题排查结果
- 核心原因是表单验证不通过,触发了Laravel默认的验证失败重定向逻辑,直接跳转回创建页。
你在store方法的验证规则里要求了user_id、status两个参数为必填项,但你的前端表单根本没有这两个输入项,从你给出的dd($request->all())结果也能看到,请求里确实没有这两个参数,所以验证直接失败。 - 额外隐藏问题:你给出的
borrow数据表字段列表里没有status字段,就算验证通过,后续执行Borrow::create写入的时候也会因为数据库不存在该字段抛出异常。
修复方案
- 调整验证规则,删掉不需要前端传参的字段校验:
public function store(Request $request) { $this->validate($request,[ 'book_id' => 'required', 'member_id' => 'required', 'borrow_date' => 'required', 'return_date' => 'required', ]); // 后续写入、重定向逻辑保持不变即可 }
user_id你是直接从登录态Auth::user()->id取值,不需要前端传;status你是写死为borrowed,也不需要前端提交,所以这两个参数不需要加到验证规则里。
2. 如果你业务上需要status字段,先创建迁移给borrow表新增status字段;如果不需要该字段,删掉Borrow::create数组里的'status' => 'borrowed',这行代码即可。
3. 建议你在Blade视图中添加验证错误提示,方便后续排查同类问题,示例如下:
{{-- 放在表单顶部或者对应字段下方都可以 --}} @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
内容的提问来源于stack exchange,提问作者SomeRandomCode
相关产品推荐
相关产品推荐

