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

Laravel项目报错SQLSTATE[23000]:DescAnunUser字段不可为NULL

解决Laravel中SQLSTATE[23000]字段非空约束错误

错误原因

数据库表TblAnunUsuario的DescAnunUser字段被设置为非空(Laravel默认string字段不允许为null),但插入/更新数据时该字段值为null,触发了数据库完整性约束。

解决步骤

1. 确认请求参数是否正确传递

  • 检查前端提交的字段名是否为DescAnunUser,注意大小写、拼写是否和后端一致。
  • 在控制器方法开头添加调试代码,查看实际接收的参数:
    dd($request->all()); // 打印所有请求参数,确认是否包含DescAnunUser
    

2. 添加请求验证(推荐)

在保存数据前,用Laravel的验证机制拦截无效请求,提前返回错误提示:

public function addAnunUsuario(Request $request)
{
    // 验证请求参数
    $validated = $request->validate([
        'TituloAnunUser' => 'required|string',
        'DescAnunUser' => 'required|string', // 强制要求该字段必填
        'PrecoAnunUser' => 'required|integer',
        'RequisitosAnunUser' => 'required|string',
        'ImgAnunUser' => 'required|string',
        'StatusAnunUser' => 'required|max:1',
        'DataAnunUser' => 'required|date',
        'idUserAnunUser' => 'required|exists:TblUsuario,idUser',
        'idTipoServAnunUser' => 'required|exists:TblTipoServico,idTipoServ',
    ]);

    // 使用验证后的参数创建模型
    $anunuser = TblAnunUsuario::create($validated);

    return response()->json([
        'status'=>'200',
        'message'=>'Anúncio inserido com sucesso',
    ]);
}

验证不通过时,Laravel会自动返回包含错误信息的JSON响应,无需手动处理。

3. 确认模型的$fillable配置

检查TblAnunUsuario模型,确保$fillable数组中包含DescAnunUser(你的代码已配置正确,此步仅做确认):

protected $fillable = ['TituloAnunUser', 'DescAnunUser', 'PrecoAnunUser', 'RequisitosAnunUser','ImgAnunUser', 'StatusAnunUser', 'DataAnunUser', 'idUserAnunUser', 'idTipoServAnunUser'];

4. 可选:允许字段为空(如果业务需要)

如果业务逻辑允许DescAnunUser为空,修改数据库迁移文件:

$table->string('DescAnunUser')->nullable();

然后重新运行迁移命令:

php artisan migrate:refresh

⚠️ 注意:migrate:refresh会清空表数据,生产环境请使用migrate:rollback + migrate,或创建新迁移文件修改字段属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:50:23