orWhere('status', TicketStatus::processed()) ->where('updated_at', '<', Carbon::now()->subDays(15)) ->whereDoesntHave('messages', function ($q) { $q->where('updated_at', '<', Carbon::now()->subDays(15)); })->get(); foreach ($tickets as $ticket) { $oldStatus = $ticket->status; $ticket->status = TicketStatus::archived(); $ticket->saveQuietly(); if (!$ticket->subscriptions->contains($ticket->user)) { event(new TicketStatusChanged($ticket, $oldStatus, null, $message)); } event(new NotifySubscriptions($ticket, $message)); } } }