first(); } /** * @description: 查询所有数据 * @param array $search * @return \Illuminate\Database\Eloquent\Collection */ public static function findAll(array $search = []) { return self::model()::where(self::getWhere($search))->get(); } /** * @description: 分页查询 * @param array $search * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public static function paginate(array $search = []) { $limit = isset($search['limit']) ? $search['limit'] : 15; $paginator = self::model()::where(self::getWhere($search)) // ->orderBy("sort", 'asc') ->paginate($limit); return ['total' => $paginator->total(), 'data' => $paginator->items()]; } /** * @description: * @param {*} $params * @return {*} */ public static function submit($user_id, $roles) { $result = false; // 获取数据库中已存在的角色列表(提取 role_id) $list = self::findAll(['user_id' => $user_id]); $existRoleIds = $list->pluck('role_id')->toArray(); // 计算新增的角色 $toInsert = array_diff($roles, $existRoleIds); // 计算需要删除的角色 $toDelete = array_diff($existRoleIds, $roles); // 开始数据库事务(假设有 DB 支持事务操作) // DB::beginTransaction(); // try { if(empty($roles)){ self::model()::where('user_id',$user_id)->delete(); }else{ // 批量插入新增角色 if (!empty($toInsert)) { $insertData = []; foreach ($toInsert as $role_id) { $insertData[] = [ 'user_id' => $user_id, 'role_id' => $role_id, ]; } self::model()::insert($insertData); } // 删除多余的角色 if (!empty($toDelete)) { self::model()::where('user_id', $user_id) ->whereIn('role_id', $toDelete) ->delete(); } } // DB::commit(); $result = true; // } catch (\Exception $e) { // DB::rollBack(); // // 记录错误日志或抛出异常 // } return $result; } }