我正在为现有业务工作的Laravel 5.1应用程序。他们有一个10k记录的客户表。我正在尝试为这些用户创建临时密码,以便他们可以邀请他们在新应用上完成个人资料。
我的想法是为临时密码创建临时表(没有双关语),这样我就可以避免在此练习之外存储未使用的密码。
这是我到目前为止所做的事情;
$users = DB::table('customers')->take(10)->get();
foreach($users as $user){
$password = str_random(8);
DB::table('temp_passwords')->insert([
'custId' => $user->id,
'tempPass' => $password,
'hash' => Hash::make($password)
]);
$user->hasPass = 1;
$user->save();
}
这适用于生成和散列密码。然后我想我会在客户表('hasPass')中设置一个标志,这样我就可以跟踪需要获取的记录。
那部分不起作用;
$user->hasPass = 1;
$user->save();
它给了我 - 类stdClass的对象无法转换为字符串
我猜是2个问题,如何为foreach中的每条记录设置标记和/或是否有更好的方法来应对整个挑战?
谢谢!
这是我用来解决这个问题的2个小时......
$password = str_random(8);
DB::table('temp_passwords')->insert([
'tempPass' => $password,
'hash' => Hash::make($password)
]);
然后......
$user = Customer::where('hasPass', 0)->first();
$password = TempPassword::where('custId', '=', '')->first();
$user['hasPass'] = 1;
$user->save();
$password->custId = $user['id'];
$password->save();
对于可能需要做同样事情的人。