2013-03-15 93 views
1

由于我将应用程序移植到Laravel并使用Auth Class,我需要将我的用户表中的所有密码更改为加密(使用Hash::make())。使用Hash :: make方法更新表中的所有条目

事情是,我想使用用户名作为默认密码(所以当迁移完成后,我的用户“马里奥”将有一个密码“马里奥”) - 我想这样做的所有条目数据库通过迁移,但我似乎无法做到,因为我不知道如何获得选择的值,散列它,然后在更新中使用它。

有没有办法做到这一点没有使用循环? (即没有对每个用户提出一个询问)

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

+0

你_have to_使用迁移?否则,你可以循环遍历每个用户的'foreach()'并设置新的密码,或者我错过了什么?为什么你不想使用循环,我没有看到任何其他的方式... – Adrenaxus 2013-03-15 16:02:25

+0

@Adrenaxus哦,我没有想到这一点。你说的一件事? (第一次登录时?) - 我不想使用循环,因为有很多用户。而且,如果有数千个(假设的),那么执行成千上万的查询可能会杀死数据库,对吧?没有那么高效(知道有一种方法可以做到这一点与1查询) – AeroCross 2013-03-15 16:03:28

+0

是的,这就是处理:)检查我的答案中的代码... – Adrenaxus 2013-03-15 16:04:32

回答

2

你为什么不这样做:

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