Laravel4:块函数不适用于模型保存()
Laravel4: Chunk function not working with model save()
我要查询 select 所有用户并散列密码并保存该模型。因为数据库中有大量数据会超时,所以我想我会尝试 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();
}
});
这不会保存模型。当我尝试在 save()
之后转储 $user
变量时,它会显示更新后的值,但是当我查看 DB 时,它仍然没有改变。我尝试使用 try catch
和 transaction
只是为了查看它是否在此过程中遇到任何异常,但没有任何帮助。任何帮助将不胜感激。另外,我在 password
字段上没有 $guarded。
你只是做错了。你能说出应该在该循环中更新哪一行吗?不? 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();
}
});
我要查询 select 所有用户并散列密码并保存该模型。因为数据库中有大量数据会超时,所以我想我会尝试 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();
}
});
这不会保存模型。当我尝试在 save()
之后转储 $user
变量时,它会显示更新后的值,但是当我查看 DB 时,它仍然没有改变。我尝试使用 try catch
和 transaction
只是为了查看它是否在此过程中遇到任何异常,但没有任何帮助。任何帮助将不胜感激。另外,我在 password
字段上没有 $guarded。
你只是做错了。你能说出应该在该循环中更新哪一行吗?不? 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();
}
});