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

Laravel Breeze注册用户仅写入邮箱与时间戳字段问题排查

问题根因

该问题是Laravel的批量赋值保护机制导致的:调用User::create()批量写入数据时,只有在User模型$fillable白名单内的字段才会被允许写入数据库,不在白名单中的字段会被自动过滤,这就是传入name、password参数但数据库对应字段为空的核心原因。

修复方案
  • 打开app/Models/User.php模型文件
  • 找到类内定义的$fillable属性,将name、password加入白名单数组,正确配置参考如下:
namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    /**
     * 可批量赋值的字段白名单
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    // 其余模型配置代码...
}
  • 保存文件后重新测试注册流程,字段即可正常写入。
备用排查项(上述修复无效时检查)
  • 检查users表结构:打开对应迁移文件(路径为database/migrations/[日期]_create_users_table.php),确认表结构中存在name(string类型)、password(string类型,长度建议设置为255,避免哈希值截断)字段。本地测试环境可执行php artisan migrate:fresh重置表结构,生产环境请单独编写补字段的迁移文件执行,不要直接重置表丢失数据。
  • 删除你在store方法中添加的三行echo调试代码,输出内容会打断后续的注册事件触发、登录、跳转逻辑,导致流程异常。
  • 检查是否编写了User模型的观察者、或者全局中间件拦截了name、password字段的写入,移除对应拦截逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:42:14