Reputation: 1384
I am using a raw query as shown below in BookController and making paginate(5) as shown below. But it throws this error "Call to a member function paginate() on array"
. Any solution, please.
public function index()
{
try {
$Book = DB::select('select b.id as id ,b.name as bk,c.name as Catagory,(select name from author_translators WHERE id = b.author_id) as Author,(select name from author_translators WHERE id = b.translate_id)as Translator,l.name as Language,pb.name as Publisher,b.publishing_date,b.edition,b.valume_number,b.ISBN from books b join categories c on b.category_id = c.id join publishers pb on b.publisher_id = pb.id join languages l on b.language_id = l.id')
->paginate(5);
return response()->json($Book);
} catch (Exception $e) {
return response()->json($e->getMessage(), 500);
}
}
Upvotes: 0
Views: 228
Reputation: 1384
I found the solution
try {
$Book = \DB::table('books')
->join('categories', 'categories.id', '=', 'books.category_id')
->join('languages', 'languages.id', '=', 'books.language_id')
->join('publishers', 'publishers.id', '=', 'books.publisher_id')
->join('author_translators as aa', 'aa.id', '=', 'books.author_id')
->join('author_translators as at', 'at.id', '=', 'books.translate_id')
->select(
'books.id as id',
'books.name as bookname',
'categories.name as category',
'aa.name as Author',
'at.name as Translator',
'languages.name as Language',
'publishers.name as Publisher',
'books.publishing_date as publishing_date',
'books.edition as edition',
'books.valume_number as valume_number',
'books.ISBN as ISBN '
)->paginate(5);
return response()->json($Book);
} catch (Exception $e) {
return response()->json($e->getMessage(), 500);
}
Upvotes: 0
Reputation: 5662
You are missing DB::table('books')
DB::table('books')->select('select b.id as id ,b.name as bk,c.name as Catagory,(select name from author_translators WHERE id = b.author_id) as Author,(select name from author_translators WHERE id = b.translate_id)as Translator,l.name as Language,pb.name as Publisher,b.publishing_date,b.edition,b.valume_number,b.ISBN from books b join categories c on b.category_id = c.id join publishers pb on b.publisher_id = pb.id join languages l on b.language_id = l.id')
->paginate(5);
Reference: https://laravel.com/docs/5.8/queries#selects
Upvotes: 1