Нисходящий порядок в ягре не работает должным образом для второй страницы и далее

Для сортировки по возрастанию yajra работает правильно (означает, что в ответе правильно отсортированы данные). У меня есть такой массив:

Предположим, у меня есть:

$order = $order_data [0]['dir']
$column = $order_data[0]['column']
$length = 5;
$start = 5;

Моя таблица данных с идентификатором по возрастанию выглядит следующим образом:

[
0=>["Id"=>"111", "name"=>"jack", "age"=>"23"]
1=>["Id"=>"112", "name"=>"harry", "age"=>"12"]
2=>["Id"=>"113", "name"=>"babu", "age"=>"23"]
3=>["Id"=>"114", "name"=>"ravi", "age"=>"43"]
4=>["Id"=>"115", "name"=>"suman", "age"=>"45"]
5=>["Id"=>"116", "name"=>"david", "age"=>"54"]
6=>["Id"=>"117", "name"=>"kiran", "age"=>"53"]
7=>["Id"=>"118", "name"=>"arjay", "age"=>"78"]
8=>["Id"=>"119", "name"=>"alien", "age"=>"23"]
]

Моя внутренняя реализация такова:

//$results contains the results after sorting
$results = $model->getPeopleSortedById($start, $length, $order);

$dataForDT = new Collection();
foreach ($results as $ds) {
$dataForDT->push($ds);
}

return Datatables::of($dataForDT)
->with(['recordsTotal' => (int)$totalRecords, 'recordsFiltered' => (int)$totalRecords])
->make('true');

Я получаю ответ для тестовых случаев:

Тестовый кейс: 1

Response: data:[["Id"=>"116", "name"=>"david", "age"=>"54"],
["Id"=>"117", "name"=>"kiran", "age"=>"53"],
["Id"=>"118", "name"=>"arjay", "age"=>"78"],
["Id"=>"119", "name"=>"alien", "age"=>"23"]]

order[0][column]:0
order[0][dir]:asc
start:5
length:5

Тестовый кейс: 2

Response : data:[] /* should have been [
["Id"=>"114", "name"=>"ravi", "age"=>"43"],
["Id"=>"113", "name"=>"babu", "age"=>"23"],
["Id"=>"112", "name"=>"harry", "age"=>"12"],
["Id"=>"111", "name"=>"jack", "age"=>"23"]] */

order[0][column]:0
order[0][dir]:desc
start:5
length:5

Для временного решения я делаю это:

//$results contains the results after sorting
$results = $model->getPeopleSortedById($start, $length, $order);

$dataForDT = new Collection();
$mDataSupport = 'true';
$orderFirst = 'false';

if ($order == "desc") {
$orderFirst = 'false';
}

//temporary fix start
if($order=="asc"){
$temp = ["Id"=>"", "name"=>"", "age"=>""];
} else {
$temp = ["Id"=>"999999999", "name"=>"zzzzzzzzzzz", "age"=>"99999999"];
}

$results = array_pad($results , (-((int)$start + count($results))), $temp);
//temporary fix end

foreach ($results as $ds) {
$dataForDT->push($ds);
}

return Datatables::of($dataForDT)
->with(['recordsTotal' => (int)$totalRecords, 'recordsFiltered' => (int)$totalRecords])
->make('true');

Теперь данные поступают правильно с использованием жирных линий.
Данные не отображаются для второй страницы вперед для desc.
Это ошибка Яджры?

PS: используя v6.27.0 Yajra. Эта проблема может отсутствовать в предыдущих версиях.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]