public function findMessages($state = false) { $user_id = $this->id; $unreadMessages = Message::whereHas('messageStates', function ($q) use(&$user_id, &$state) { $q->where('user_id', '=', $user_id); if ($state) { $q->where('state', '=', MessageState::indexOf($state)); } })->with('conversation')->get(); return $unreadMessages; }