'datetime']; public function conversation() { return $this->belongsTo(Conversation::class); } public function sender() { return $this->belongsTo(User::class, 'sender_id'); } public function scopeOrdered(Builder $query): Builder { return $query->orderBy('created_at'); } public function toRealtimePayloadFor(int $viewerId): array { $this->loadMissing('sender:id,name'); return [ 'id' => (int) $this->getKey(), 'body' => (string) $this->body, 'time' => $this->created_at?->format('H:i') ?? now()->format('H:i'), 'sender_id' => (int) $this->sender_id, 'sender_name' => (string) ($this->sender?->name ?? 'User'), 'is_mine' => (int) $this->sender_id === $viewerId, ]; } }