public function threadsWithNewMessagesForPoll() { $updatedThreadsIds = $this->threadsWithNewMessages(); $updatedThreads = Thread::whereIn('id', $updatedThreadsIds)->get(); $updatedThreads = $updatedThreads->filter(function ($thread) { return strtotime($thread->updated_at) >= strtotime($thread->getParticipantFromUser($this->id)->last_poll); }); foreach ($updatedThreads as $thread) { foreach ($thread->messages as $message) { $message->timeDiffForHumen = $message->created_at->diffForHumans(); $message->senderDetails = $message->user->first_name . " " . $message->user->last_name; $message->layout = $message->user_id == $this->id ? "right" : "left"; } } return $updatedThreads; }