Repo::user()->get($attributes['user_id']), set: fn ($value) => $value->getId() ); } public function userGroup(): Attribute { return Attribute::make( get: fn ($value, $attributes) => Repo::userGroup()->get($attributes['user_group_id']), set: fn ($value) => $value->getId() ); } public function userId(): Attribute { return Attribute::make( get: fn ($user, $attributes) => $attributes['user_id'], set: fn ($value) => ['user_id' => $value] ); } public function userGroupId(): Attribute { return Attribute::make( get: fn ($userGroup, $attributes) => $attributes['user_group_id'], set: fn ($value) => ['user_group_id' => $value] ); } public function scopeWithUserId(Builder $query, int $userId): Builder { return $query->where('user_user_groups.user_id', $userId); } public function scopeWithUserGroupId(Builder $query, int $userGroupId): Builder { return $query->where('user_user_groups.user_group_id', $userGroupId); } public function scopeWithContextId(Builder $query, int $contextId): Builder { return $query ->join('user_groups as ug', 'user_user_groups.user_group_id', '=', 'ug.user_group_id') ->where('ug.context_id', $contextId); } }