xtremeCODE
xtremeCODE

Reputation: 719

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

Upvotes: 2

Views: 1594

Answers (1)

Piyush Shukla
Piyush Shukla

Reputation: 254

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

Upvotes: 1

Related Questions