public function search($input) { $query = Author::query(); $columns = Schema::getColumnListing('authors'); $attributes = array(); foreach ($columns as $attribute) { if (isset($input[$attribute]) and !empty($input[$attribute])) { $query->where($attribute, $input[$attribute]); $attributes[$attribute] = $input[$attribute]; } else { $attributes[$attribute] = null; } } return [$query->get(), $attributes]; }
/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\Response */ public function getAuthorByBook(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 Author())->getKeyName(); return Author::query()->where('id', '=', $request->author_id)->get([$id])->count(); }; $results = function () use($request) { return EloquentHelper::paginate($this->serializer, Author::query()->where('id', '=', $request->author_id))->get(); }; $uri = route('api.authors.show', ['id' => $request->author_id]); return $resource->get($totalAmount, $results, $uri, Author::class); }