*/ use HasFactory, HasPushSubscriptions, Notifiable, PasskeyAuthenticatable, TwoFactorAuthenticatable; public function dynamics() { return $this->belongsToMany(Dynamic::class, 'participants'); } public function mutations() { return $this->hasMany(Mutation::class); } public function readCursors() { return $this->hasMany(ReadCursor::class); } public function displayNameFor(Dynamic $dynamic): string { $participant = $dynamic->participants()->where('user_id', $this->id)->first(); return $participant?->pivot?->display_name ?? $this->name; } /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', 'two_factor_confirmed_at' => 'datetime', ]; } protected static function booted(): void { static::creating(function ($model) { $model->uuid = (string) Str::uuid(); }); } public function getRouteKeyName() { return 'uuid'; } }