$invites * @property-read int|null $invites_count * @property-read TeamMember|null $pivot * @property-read Collection $members * @property-read int|null $members_count * @property-read Collection $receivedOneTimeSecrets * @property-read int|null $received_one_time_secrets_count * * @method static Builder|Team newModelQuery() * @method static Builder|Team newQuery() * @method static Builder|Team query() * @method static Builder|Team scopeVisibleTo(\App\Models\User $user) * @method static Builder|Team whereCreatedAt($value) * @method static Builder|Team whereId($value) * @method static Builder|Team whereName($value) * @method static Builder|Team whereRequire2fa($value) * @method static Builder|Team whereSlug($value) * @method static Builder|Team whereUpdatedAt($value) * * @mixin \Eloquent */ #[Fillable(['name', 'slug', 'require_2fa'])] class Team extends Model { public function members(): BelongsToMany { return $this->belongsToMany(User::class, 'team_members') ->using(TeamMember::class) ->withPivot('role') ->withTimestamps(); } public function invites(): HasMany { return $this->hasMany(TeamInvite::class); } public function receivedOneTimeSecrets(): MorphMany { return $this->morphMany(OneTimeSecret::class, 'recipient'); } #[Scope] public function scopeVisibleTo(Builder $query, User $user): Builder { return $query->whereHas('members', function (Builder $query) use ($user): void { $query->whereKey($user->getKey()); }); } protected function casts() { return [ 'require_2fa' => 'boolean', ]; } }