You can use count , then get in the same query.
And by the way, your entire request is a little more complicated. This leads to something like this:
select * from `contacts` where ((`firstname` like ?) and (`lastname` like ?)) limit X, Y
Closing in where used to create such a request, for example:
select * from table where (X or Y) and (A or B);
So to summarize:
$query = Contact::query(); if (!empty($request['firstname'])) { $query->where('firstname', 'like', "%{$request['firstname']}%"); } if (!empty($request['lastname'])) { $query->where('lastname', 'like', "%{$request['lastname']}%"); } $count = $query->count(); $contacts = $query->take($iDisplayLength)->skip(iDisplayStart)->get();
source share