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

Laravel注册表单无法向数据库插入新增的proffession字段值

解决Laravel注册时无法插入自定义profession字段的问题

我来帮你搞定这个问题!你遇到的情况是Laravel默认的注册流程没有包含你新增的profession字段,所以需要手动调整几个关键地方:

1. 配置User模型的批量赋值白名单

Laravel通过模型的$fillable属性来控制哪些字段可以被批量赋值(比如通过User::create()方法插入数据),你需要把profession添加进去:

// app/User.php
namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * 可以批量赋值的属性
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'profession', // 新增profession字段
    ];

    // ... 其他模型代码保持不变
}

2. 更新注册控制器的验证规则

打开app/Http/Controllers/Auth/RegisterController.php,修改validator方法,为profession添加对应的验证规则(根据你的需求调整,比如是否必填、长度限制等):

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
        'profession' => ['required', 'string', 'max:190'], // 新增profession的验证规则
    ]);
}

如果profession是可选字段,把required去掉即可。

3. 修改注册控制器的create方法

同样在RegisterController.php里,找到create方法,把profession字段加入到创建用户的数组中:

use Illuminate\Support\Facades\Hash;

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'profession' => $data['profession'], // 新增这一行,把表单提交的profession值存入数据库
    ]);
}

4. 最后检查前端表单的name属性

确保你在resources/views/auth/register.blade.php中添加的输入框name属性是profession,这样表单提交时才能把值传到后端:

<div class="form-group row">
    <label for="profession" class="col-md-4 col-form-label text-md-right">{{ __('Profession') }}</label>

    <div class="col-md-6">
        <input id="profession" type="text" class="form-control @error('profession') is-invalid @enderror" name="profession" value="{{ old('profession') }}" required autocomplete="profession">

        @error('profession')
            <span class="invalid-feedback" role="alert">
                <strong>{{ $message }}</strong>
            </span>
        @enderror
    </div>
</div>

做完这几步后,再测试注册流程,profession字段的值应该就能正常存入MySQL的users表了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:30:23