Search code examples
phplaravelapilaravel-api

Search Returns All Data in Database while using Laravel APi


I am working on an API with Laravel, I want to be able to search using the API, but I am unable to Here is my method

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


}

I don't know what I am doing wrong as this returns all the data in the database when search using postman.

My route in api.php

Route::get('/search', 'BooksController@searchapi');

UPDATE

I am using post man to test. I passed Key=search and value=searchterm


Solution

  • Method:

    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:

    Route::post('/search', 'BooksController@searchapi');