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

如何将哈希密码存入数据库?Laravel代码问题求助

问题解决思路

你的问题出在两个核心点:一是没有将哈希后的密码赋值回原数组,二是变量名不一致(注入的UserService实例是$user,但你用了未定义的$userService调用方法)。以下是具体修正方案:

1. 修正store方法的变量与密码赋值

在store方法中,调用hashPassword后,必须把返回的哈希密码覆盖原数组里的password字段,才能让后续的createUser使用哈希后的值:

public function store(RegistrationRequest $request, UserService $userService)
{
     // 获取验证通过的字段数据
     $userData = $request->correctValidate();  
     // 将哈希后的密码赋值回数组的password字段
     $userData['password'] = $userService->hashPassword($userData['password']);
     // 传入更新后的数组创建用户
     $userService->createUser($userData);
}

2. 优化方法参数命名(可选但建议)

createUser方法的参数名$request容易和请求对象混淆,建议改为更清晰的命名,避免歧义:

public function createUser($userData): void
{
    User::create($userData);
}

3. 模型字段验证(必查)

确保你的User模型已经在$fillable属性中包含password字段,否则create方法会因为批量赋值限制忽略这个字段:

class User extends Model
{
    protected $fillable = [
        'name',
        'email',
        'password', // 必须包含该字段
        // 其他允许批量赋值的字段
    ];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:10:15