laravel - Laravel Spatie 调用未定义的方法 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();
在不知道确切结果的情况下,您似乎想检索一组用户名,您想从中获取 User 模型。
您可以执行以下操作(未经测试)进行批量更新。:
$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();
}
推荐阅读
- reactjs - React - Firebase,检测配置文件数据更新以重新加载组件
- php - PHP - 如何复制一段 URL 并将其处理成一个按钮?(语言代码 - ?lang=xx-
- ios - 加载框架时Xcode找不到桥接头
- java - java应用程序运行时如何使用热键?
- stanford-nlp - 我们如何将我们自己的自定义嵌入与 WordMoverDistance 一起使用?
- python - 如何解决 hls4ml 的这个问题?
- reactjs - 将组件存储在状态中是个好主意吗?
- java - 使用 FragmentStateAdapter 实现 ViewPager2 的问题
- powershell - Powershell - 导出 csv 以获取程序名称、版本、安装日期
- git - Git 裸仓库和非裸仓库