I pull in the paginated data via AJAX requests in my Laravel application. This works fine for the first chunk. For the following however, it's only passing one column (the id).
What is the problem?
The relevant code:
Route::get('contacts', function (Request $request) {
return buildQuery($request, User::class)->simplePaginate(50);
});
function buildQuery(Request $request, $model) {
$query = DB::table('users')->select('id as ID');
$properties = $request->all();
$searchString = "";
if (in_array('q', array_keys($properties)) && $properties['q']) {
$searchString = $properties['q'];
$query->orWhere('id', 'like', '%'.$searchString.'%');
}
foreach ($properties as $property => $value) {
if ($property == "id" || $property == "q")
continue;
if (in_array($property, array_keys($model::$labels))) {
$query->addSelect($property.' as '.$model::$labels[$property]);
if ($value == "desc" || $value == "asc")
$query->orderBy($property, $value);
if ($searchString)
$query->orWhere($property, 'like', '%'.$searchString.'%');
}
}
return $query;
}