向数据库传入数据时出现SQLSTATE[HY000]错误:字段'item_name'无默认值
解决SQLSTATE[HY000]: General error: 1364 Field 'item_name' doesn't have a default value错误
这个错误的核心原因是数据库的item_name字段不允许为NULL且未设置默认值,同时你插入数据时没有给该字段传值。以下是具体排查和解决步骤:
检查控制器的数据传递
确认addConsultation方法里,是否把请求中的item_name值正确传给模型。比如用批量赋值时,要确保$request里包含item_name参数,且代码明确传递了这个字段:// 示例:手动指定插入字段 $consultation = Consultation::create([ 'item_name' => $request->input('item_name'), // 其他字段... ]);或者用
only方法筛选字段时,要包含item_name:Consultation::create($request->only(['item_name', '其他字段1', '其他字段2']));检查模型的批量赋值白名单
打开你的模型文件,确认$fillable数组里包含item_name,否则Laravel会阻止该字段的批量赋值:protected $fillable = ['item_name', '其他需要批量赋值的字段'];修改数据库字段配置
如果item_name不是必填字段,可以直接调整数据库表结构:- 创建或修改迁移文件,调整字段属性:
Schema::table('consultations', function (Blueprint $table) { // 允许字段为NULL $table->string('item_name')->nullable()->change(); // 或者给字段设置默认值 // $table->string('item_name')->default('默认内容')->change(); }); - 执行迁移使修改生效:
php artisan migrate
- 创建或修改迁移文件,调整字段属性:
内容的提问来源于stack exchange,提问作者jowehh
相关产品推荐
相关产品推荐

