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);
 }