Laravel4: функция чанка не работает с сохранением модели ()

У меня есть запрос, чтобы выбрать всех пользователей и хэшировать пароль и сохранить эту модель. Поскольку время ожидания истекает из-за большого объема данных в БД, я решил попробовать функцию chunk (). Мой запрос выглядит так:

    $users = User::where('password','!=','0')->select(array('password'))->chunk(50,function($users){
foreach ($users as $user) {
$user->password = Hash::make($user->password);
$user->save();
}
});

Это не спасает модель. когда я пытаюсь сбросить $user переменная после save() он отображает обновленные значения, но когда я смотрю в БД, он все еще остается неизменным. Я пытался с помощью try catch а также transaction просто чтобы увидеть, попадает ли какое-либо исключение во время процесса, ничего не помогло. Любая помощь будет оценена. Кроме того, я не охраняю password поле.

0

Решение

Вы просто делаете это неправильно. Можете ли вы сказать, какая строка должна быть обновлена ​​в этом цикле? Нет? Eloquent тоже не знает, поэтому работает update ... where id is null 😉

Просто добавь id к select пункт, и это будет работать (если у вас нет магии, происходящей в saving событие и т. д.):

$users = User::where('password','!=','0')
->select(array('id', 'password'))
->chunk(50,function($users){
foreach ($users as $user) {
$user->password = Hash::make($user->password);
$user->save();
}
});
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]