2013-03-15 60 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(); 
} 
相關問題