private function getDefaultBookQuery($ignoreOrderBy = false) { $query = $this->book->query()->with('author')->take($this->defaultOptions['limit'])->skip(0); if ($ignoreOrderBy) { return $query; } return $query->orderBy($this->defaultOptions['orderBy'], $this->defaultOptions['order']); }
/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\Response */ public function getBooksByAuthor(Request $request) { $apiRequest = RequestFactory::create(); $page = $apiRequest->getPage(); if (!$page->size()) { $page->setSize(10); //Default elements per page } $resource = new ListResource($this->serializer, $page, $apiRequest->getFields(), $apiRequest->getSort(), $apiRequest->getIncludedRelationships(), $apiRequest->getFilters()); $totalAmount = function () use($request) { $id = (new Book())->getKeyName(); return Book::query()->where('author_id', '=', $request->author_id)->get([$id])->count(); }; $results = function () use($request) { return EloquentHelper::paginate($this->serializer, Book::query()->where('author_id', '=', $request->author_id))->get(); }; $uri = route('api.authors.books', ['author_id' => $request->author_id]); return $resource->get($totalAmount, $results, $uri, Author::class); }