selectedId = $id; SandboxMail::find($id)?->update(['is_read' => true]); } public function deleteOne(int $id): void { SandboxMail::findOrFail($id)->delete(); if ($this->selectedId === $id) { $this->selectedId = null; } } public function clearAll(): void { SandboxMail::truncate(); $this->selectedId = null; } public function render() { $query = SandboxMail::orderByDesc('received_at'); if ($this->search !== '') { $s = '%' . $this->search . '%'; $query->where(fn($q) => $q ->where('from_address', 'like', $s) ->orWhere('subject', 'like', $s) ->orWhereJsonContains('to_addresses', $this->search) ); } $mails = $query->get(); $selected = $this->selectedId ? SandboxMail::find($this->selectedId) : null; $unread = SandboxMail::where('is_read', false)->count(); return view('livewire.ui.system.sandbox-mailbox', compact('mails', 'selected', 'unread')); } }