hasOne( Role::class, 'id', 'role_id' ); } public function getStatusWithCssAttribute() { return ($this->status ?? 0) ? sprintf('', '启用') : sprintf('', '禁用'); } public function sites(): BelongsToMany { return $this->belongsToMany( Site::class, 'user_has_sites', 'user_id', 'site_id' ); } public function permissions() { return $this->belongsToMany( Permission::class, 'user_has_permissions', 'user_id', 'permission_id' ); } protected static $permissions; //静态缓存 public function hasAuth($auth): bool { if (!empty($this->is_super)) return true; if (self::$permissions === null) { $role = $this->role ?? null; if (!$role) return false; self::$permissions = $role->permissions->where('type', 2)->pluck('rule')->toArray(); } if (in_array($auth, self::$permissions)) { return true; } return false; } public function username() { return $this->username ?? ''; } public static function getUserList() { $userList = User::query()->pluck('nickname', 'id')->toArray()??[]; return $userList; } }