Laravel中如何查询所有用户记录?权限分配代码问题咨询
给所有用户批量分配权限的解决方案
问题原因:
User::get()返回的是Eloquent集合对象,集合本身没有attachPermission方法——这个方法是单个User模型实例的方法,所以直接调用会报错;另外->all()属于多余调用,User::get()已经能获取所有用户数据。基础实现方式:遍历所有用户实例,逐个调用权限分配方法
$users = User::all(); foreach ($users as $user) { $user->attachPermission($permission); }高效批量操作(推荐):直接操作多对多关联的中间表,避免循环查询带来的性能损耗
// 假设权限与用户的关联中间表名为permission_user $permissionId = $permission->id; // 先获取所有用户ID $userIds = User::pluck('id'); // 批量插入关联数据 DB::table('permission_user')->insert( $userIds->map(function ($userId) use ($permissionId) { return [ 'user_id' => $userId, 'permission_id' => $permissionId, 'created_at' => now(), 'updated_at' => now() ]; })->toArray() );提示:如果中间表包含额外字段,需要在插入数组中补充对应值;若要避免重复插入,可先查询已存在的关联记录,过滤掉已拥有该权限的用户ID后再执行插入。
内容的提问来源于stack exchange,提问作者juros111222
相关产品推荐
相关产品推荐

