2013-03-15 2 views
1

Поскольку я переношу приложение в Laravel, и он использует класс Auth, мне нужно изменить все пароли в таблице моих пользователей на байкрипт (используя Hash::make()).Использование метода Hash :: make для обновления всех записей в таблице

Дело в том, что я хочу использовать имена пользователей в качестве пароля по умолчанию (поэтому, когда миграция завершена, у моего пользователя «Марио» будет пароль «Марио»). Я хочу сделать это со всеми записями базы данных через Migration, но я не могу это сделать, поскольку я не знаю, как получить значение select, hash it, а затем использовать его в обновлении.

Есть ли способ сделать это без использования петель? (т. е. без запроса по одному пользователю)

EDIT: Да, это невозможно обойтись без петель. Я понял, что. И @Adrenaxus имеет правильный ответ.

+0

ли вы _have to_ использование миграции? В противном случае вы можете просто пропустить каждого пользователя в 'foreach()' и установить новый пароль, или я что-то упустил? Почему бы вам не использовать циклы, я не вижу другого способа ... – Adrenaxus

+0

@Adrenaxus О, я об этом не думал. Вы говорите? (при регистрации в первый раз?) - я не хочу использовать циклы, потому что есть много пользователей. И, в случае, есть тысячи (гипотетических), делая тысячи и тысячи запросов, может убить базу данных, не так ли? Не так эффективно (зная, что есть способ сделать это с 1 запросом) – AeroCross

+0

да, это сделка :) проверьте код в моем ответе ... – Adrenaxus

ответ

2

Почему бы вам не сделать что-то вроде этого:

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

 Смежные вопросы

  • Нет связанных вопросов^_^