Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 使用Hash::make方法更新表中的所有条目_Laravel_Eloquent - Fatal编程技术网

Laravel 使用Hash::make方法更新表中的所有条目

Laravel 使用Hash::make方法更新表中的所有条目,laravel,eloquent,Laravel,Eloquent,因为我正在将一个应用程序移植到Laravel,并且它使用的是Auth类,所以我需要将users表中的所有密码更改为bycrypt(使用Hash::make()) 问题是,我想使用用户名作为默认密码(因此,当迁移完成时,我的用户“Mario”将有一个“Mario”密码)-我想通过迁移对数据库的所有条目执行此操作,但我似乎无法做到这一点,因为我不知道如何获取select的值,对其进行散列,然后在更新中使用它 有没有办法不用循环就可以做到这一点?(即每个用户不进行一次查询) 编辑:是的,如果没有循环,

因为我正在将一个应用程序移植到Laravel,并且它使用的是Auth类,所以我需要将users表中的所有密码更改为bycrypt(使用
Hash::make()

问题是,我想使用用户名作为默认密码(因此,当迁移完成时,我的用户“Mario”将有一个“Mario”密码)-我想通过迁移对数据库的所有条目执行此操作,但我似乎无法做到这一点,因为我不知道如何获取select的值,对其进行散列,然后在更新中使用它

有没有办法不用循环就可以做到这一点?(即每个用户不进行一次查询)


编辑:是的,如果没有循环,这是不可能的。我意识到了。@Adrenaxus有正确的答案。

你为什么不这样做:

foreach(User::all() as $user){
    $user->password = Hash::make($user->username);
    $user->save();
}

您必须使用迁移吗?否则,您可以在
foreach()
中遍历每个用户并设置新密码,还是我遗漏了什么?你为什么不想使用循环,我看不出其他方法…@Adrenaxus哦,我没想到。你说是一次吗?(第一次登录时?)-我不想使用循环,因为有很多用户。而且,在有数千个(假设)的情况下,进行成千上万的查询可能会杀死数据库,对吗?效率不高(知道有一种方法可以通过一个查询实现)是的,就是这样:)查看我答案中的代码……不要担心用户数量,sql是为大量查询而设计的(除非你有1万亿用户)。除此之外,您只能在laravel PHP中使用
Hash::make()
,如何在SQL查询中实现这一点?我很高兴能提供帮助,请记住:没有愚蠢的问题,只有愚蠢的答案:)