'boolean', 'tenant_id' => 'integer', ]; /** * 관계: 메뉴 권한 (다대다) */ public function menuPermissions() { return $this->hasMany(RoleMenuPermission::class, 'role_id'); } /** * 관계: 테넌트 */ public function tenant() { return $this->belongsTo(Tenant::class); } /** * 관계: 사용자 역할 */ public function userRoles() { return $this->hasMany(UserRole::class); } /** * 관계: 사용자 (user_roles 테이블 통해) */ public function users() { return $this->belongsToMany( User::class, 'user_roles', 'role_id', 'user_id' ); } /** * 관계: 권한 (role_has_permissions 테이블 통해) */ public function permissions() { return $this->belongsToMany( Permission::class, 'role_has_permissions', 'role_id', 'permission_id' ); } /** * 스코프: 공개된 역할만 */ public function scopeVisible($query) { return $query->where('is_hidden', false); } /** * 스코프: 숨겨진 역할만 */ public function scopeHidden($query) { return $query->where('is_hidden', true); } }