public function collections(Collection $collection, Guard $guard) { $collections = $collection->with(['votes' => function ($query) { $query->select('collection_user_vote.vote', 'collection_user_vote.user_id'); }, 'user' => function ($query) { $query->select('users.id', 'users.name'); }, 'blueprints' => function ($query) { $query->select('blueprint.id', 'blueprint.name'); }])->paginate(8); $collectionsAsArray = $collections->toArray()['data']; foreach ($collectionsAsArray as $key => $value) { if (!empty($value['votes'])) { $totalVotes = 0; foreach ($value['votes'] as $vote) { // get total number of votes $totalVotes += $vote['vote']; // check if the current user has voted if ($guard->check()) { if ($vote['user_id'] == $guard->user()->getAuthIdentifier()) { $collectionsAsArray[$key]['user_has_voted'] = true; $collectionsAsArray[$key]['user_vote'] = $vote['vote']; } } } $collectionsAsArray[$key]['total_votes'] = $totalVotes; } else { $collectionsAsArray[$key]['user_has_voted'] = false; $collectionsAsArray[$key]['total_votes'] = 0; } } return view('buildcraft.collections')->with(['collections' => $collections, 'collectionsAsArray' => $collectionsAsArray]); }