public function getQuizzes(Request $request) { $from = (int) $request->input('from', null); $limit = (int) $request->input('limit', 10); $fromPrev = $from - $limit > 0 ? $from - $limit : null; $quizzes = Quiz::take($limit)->orderBy('date_created')->with('user')->with('media'); if ($from > 0) { $quizzes->skip($from); } $quizzes = $quizzes->get(); $api = new ApiHandler(); $api->setCollection($quizzes)->isCollection()->enableSideloading(); $api->addLink('self', route('get_quizzes', ['from' => $fromPrev, 'limit' => $limit])); if ($quizzes->count() === $limit) { $api->addLink('next', route('get_quizzes', ['from' => $quizzes->last()->getKey(), 'limit' => $limit])); } if ($from) { $api->addLink('prev', route('get_quizzes', ['from' => $fromPrev, 'limit' => $limit])); } return $api->send(); }