Поиск возвращает все данные в базе данных при использовании 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');
Другие вопросы по тегам