Поиск возвращает все данные в базе данных при использовании Laravel APi
Я работаю над API с Laravel, я хочу иметь возможность выполнять поиск с помощью API, но я не могу Вот мой метод
public function searchapi()
{
$search = request()->get('search');
/* $books = Book::when($search, function ($query, $search) {
return $query->where('name', 'LIKE', "%{$search}%");
})
->orderBy('created_at', 'desc')
->simplepaginate(12); */
$books = Book::where('name', 'LIKE', "%{$search}%")->Paginate(16);
$author = Author::where('name', 'LIKE', "%{$search}%")->Paginate(16);
$genre = Category::where('title', 'LIKE', "%{$search}%")->Paginate(16);
return Response::json(array(
'books' => $books,
'author'=>$author,
'genre'=>$genre,
));
}
Я не знаю, что делаю неправильно, так как это возвращает все данные в базе данных при поиске с использованием почтальона.
Мой маршрут в api.php
Route::get('/search', 'BooksController@searchapi');
ОБНОВИТЬ
Я использую почтальон для тестирования. Я прошелKey=search
а также value=searchterm
1 ответ
Решение
Метод:
public function searchapi(Request $request)
{
$search = request()->get('search');
/* $books = Book::when($search, function ($query, $search) {
return $query->where('name', 'LIKE', "%{$search}%");
})
->orderBy('created_at', 'desc')
->simplepaginate(12); */
$books = Book::where('name', 'LIKE', "%{$search}%")->Paginate(16);
$author = Author::where('name', 'LIKE', "%{$search}%")->Paginate(16);
$genre = Category::where('title', 'LIKE', "%{$search}%")->Paginate(16);
return Response::json(array(
'books' => $books,
'author'=>$author,
'genre'=>$genre,
));
}
Маршрут:
Route::post('/search', 'BooksController@searchapi');