Laravel Spatie 调用未定义的方法 Illuminate\Database\Query\Builder::assignRole()
Laravel Spatie Call to undefined method Illuminate\Database\Query\Builder::assignRole()
尝试对许多用户执行 assignRole()
,但它显示调用未定义的方法 Illuminate\Database\Query\Builder::assignRole()。这是 spatie laravel 错误吗?
$get_username = \App\Applicant::select('username')->whereIn('id', $ids);
$updateUser = \App\User::whereIn('username', $get_username);
$updateUser->assignRole('Applicant');
$updateUser->save();
在这种情况下,批量 assignRole()
有什么解决方案吗?
$get_username = \App\Applicant::select('username')->whereIn('id', $ids);
这是通过 QueryBuilder 进行的不完整查询。以及第二行。
使用 QueryBuilder 时,您需要使用 get()
方法完成查询以获取要迭代的集合。
正确的执行是这样的:
$get_username = \App\Applicant::select('username')->whereIn('id', $ids)->get();
在不知道具体结果的情况下,您似乎想要检索一组用户名,您希望从中获取用户模型。
您可以执行如下操作(未经测试)进行批量更新。:
$users = User::whereIn('username', function($query) use ($ids) {
$query->select('username')
->from('applicants')->whereIn('id', $ids);
})->get();
foreach($users as $user) {
$user->assignRole('Applicant');
$user->save();
}
尝试对许多用户执行 assignRole()
,但它显示调用未定义的方法 Illuminate\Database\Query\Builder::assignRole()。这是 spatie laravel 错误吗?
$get_username = \App\Applicant::select('username')->whereIn('id', $ids);
$updateUser = \App\User::whereIn('username', $get_username);
$updateUser->assignRole('Applicant');
$updateUser->save();
在这种情况下,批量 assignRole()
有什么解决方案吗?
$get_username = \App\Applicant::select('username')->whereIn('id', $ids);
这是通过 QueryBuilder 进行的不完整查询。以及第二行。
使用 QueryBuilder 时,您需要使用 get()
方法完成查询以获取要迭代的集合。
正确的执行是这样的:
$get_username = \App\Applicant::select('username')->whereIn('id', $ids)->get();
在不知道具体结果的情况下,您似乎想要检索一组用户名,您希望从中获取用户模型。
您可以执行如下操作(未经测试)进行批量更新。:
$users = User::whereIn('username', function($query) use ($ids) {
$query->select('username')
->from('applicants')->whereIn('id', $ids);
})->get();
foreach($users as $user) {
$user->assignRole('Applicant');
$user->save();
}