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

Laravel设置字段默认值遇SQLSTATE[HY000] 1364错误求助

问题分析与解决

核心原因

报错SQLSTATE[HY000]: General error: 1364 Field 'inscripted_at' doesn't have a default value但调试工具能看到字段传值,90%概率是Laravel模型的批量赋值限制导致的——你的Chababounauser模型没把inscripted_at和status加入可批量赋值的白名单,框架自动过滤了这两个字段,数据库接收不到值才触发错误。

解决步骤

1. 修正模型的$fillable属性

打开Chababounauser模型文件,把inscripted_at和status添加到$fillable数组里:

class Chababounauser extends Model
{
    protected $fillable = [
        'name',
        'surname',
        'job',
        'day',
        'month',
        'year',
        'hobby',
        'help',
        'place',
        'residence',
        'email',
        'photo',
        'scholar_year',
        'tel',
        // 新增以下两个字段
        'inscripted_at',
        'status'
    ];
}

2. 验证请求数据完整性(可选排查)

如果修改后还是报错,在控制器的create方法前临时添加打印代码,确认请求是否真的携带了目标字段:

// 在Chababounauser::create($req->all());之前添加
dd($req->all());
  • 如果输出里没有inscripted_at/status,检查表单是否加了@csrf、提交方式是否为POST,或者字段名是否和数据库表字段拼写不一致。
  • 如果有这两个字段,那就是模型配置的问题,再检查$fillable是否写错。

3. 备选方案:手动赋值(不推荐但应急可用)

如果不想修改模型$fillable,可以手动构建赋值数组:

Chababounauser::create([
    'name' => $req->name,
    'surname' => $req->surname,
    'job' => $req->job,
    'day' => $req->day,
    'month' => $req->month,
    'year' => $req->year,
    'hobby' => $req->hobby,
    'help' => $req->help,
    'place' => $req->place,
    'residence' => $req->residence,
    'email' => $req->email,
    'photo' => $req->photo,
    'scholar_year' => $req->scholar_year,
    'tel' => $req->tel,
    'inscripted_at' => $req->inscripted_at,
    'status' => $req->status
]);

4. 数据库兜底设置(可选)

如果想避免前端未传值时的报错,可以在数据库中给inscripted_at字段设置默认值,或者允许字段为NULL,但这只是兜底方案,核心还是要确保Laravel能正确传递字段值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:30:51