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

Laravel静态下拉框插入数据报错:Field 'city'无默认值

解决Laravel中静态下拉框数据插入数据库时的'Field 'city' doesn't have a default value'错误

我帮你梳理了代码里的几个关键问题,按照下面的步骤修改应该就能解决这个报错:

1. 修正控制器里的字段赋值错误

你表单里的用户名输入框name属性是username,模型的$fillable里也包含username,但控制器里错误地写了:

$job_seeker ->name = $request->name;

这会导致username字段没被正确赋值,反而给一个不存在的name字段赋值,赶紧改成:

$job_seeker ->username = $request->username;

2. 完善后端验证规则,确保city字段被校验

你的验证规则里只检查了用户名(还写错了字段名)、邮箱和密码,完全没管city和categories。就算前端加了required,后端也必须做兜底验证,避免用户绕过前端限制。更新验证规则如下:

$validatedData = $request->validate([
    'username' => 'required|max:255', // 修正为对应表单的username字段
    'email' => 'required|email|unique:job_seekers', // 增加邮箱格式校验
    'password'=>'min:5|required|confirmed', // 加confirmed验证密码确认框
    'city' => 'required|string', // 强制校验city必填
    'categories' => 'required|string', // 如果categories是必填项就加,非必填就改成nullable|string
]);

3. 优化代码写法,用批量赋值更稳妥

可以利用Laravel的批量赋值特性,结合模型的$fillable简化代码,还能避免字段遗漏:

// 先处理密码加密
$request->merge(['password' => Hash::make($request->password)]);

// 用create方法批量插入数据
Job_Seeker::create($request->only(['username', 'email', 'password', 'city', 'categories']));

4. 最后确认数据库字段配置

检查你的job_seekers表:

  • 如果city字段设置为NOT NULL,必须通过前后端验证确保总有有效值
  • 如果允许city为空,可以在模型里给字段设置默认值,或者把验证规则里的required改成nullable

按这些步骤调整后,city字段就能正常被插入数据库了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:14:02