Laravel 9 新增表字段无法保存数据问题排查求助
无法向questions表的rule字段存入数据的原因分析
导致数据无法保存的核心问题有三个:
1. 控制器字段名拼写错误
你在store方法的create数组里,使用的键名是rules,但数据库中新增的字段实际是rule(单数形式),两者不匹配导致数据无法对应存入:
// 错误写法 Question::create([ // ...其他字段 'rules' => $request->rule, // 键名应为'rule' ]); // 正确写法 Question::create([ // ...其他字段 'rule' => $request->rule, ]);
2. Textarea标签的value属性无效
HTML的<textarea>标签不支持通过value属性设置默认内容,正确的做法是把默认值放在标签的开闭标签之间,你的代码里的value="{{old('rule')}}"不会生效:
<div class="form-group"> <label>Rules:</label> <textarea name="rule" id="rule" class="form-control">{{old('rule')}}</textarea> @error('rule') <small class="text-danger">{{$message}}</small> @enderror </div>
3. 需确认模型的批量赋值权限
Laravel的create方法依赖模型的$fillable属性允许批量赋值,你需要确保Question模型中已将rule字段加入$fillable数组:
class Question extends Model { protected $fillable = [ 'title', 'slug', 'evaluation_id', 'type', 'rule', // 必须添加此字段 // ...其他允许批量赋值的字段 ]; }
内容的提问来源于stack exchange,提问作者Jefferson Farid
相关产品推荐
相关产品推荐

