как вы получаете обратно сумму («количество») для разбитого на страницы красноречивого запроса в laravel 5? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть модель Logbook для пилота и моего контроллера. Возврат

$this->log_book->orderBy('flight_date','asc')->paginate(18);

Я хочу суммировать общее время полета на каждой странице.

общее время полета для первой страницы рассчитывается из БД, но для второй страницы и следующей страницы $previous_total_page_time должно быть общим временем первой страницы и для следующей страницы.

Я не знаю, как можно сохранить временную переменную $page_previous_total_time и использовать ее на второй и последующих страницах

время полета сохраняется как A Int (минуты в целых числах)

запрос: Get

на этом изображении вы видите мой взгляд

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Я решил эту проблему.


$currentPage = $logs->currentPage();
 if ($currentPage == 1) {
  $totalPrevPages = $flight_total_time;
  $flightInsTimePrevPages = $flight_ins_time;
  $total_time=$totalPrevPages + $totalCurrentPage;
}
else {
     $total_time = $this->log_book->log()->orderBy('leg_date','asc')->limit($count * $currentPage)->sum('total_time') + $flight_total_time;
    $totalPrevPages = $total_time - $totalCurrentPage ;
}

0 голосов
/ 16 февраля 2020

Вы можете рассчитать общее время полета по каждому запросу. Это не проверено, но гипотетически должно работать.

$logBook = $this->log_book->orderBy('flight_date','asc');

$logBookPagination = $logBook->paginate(18);

// change the offset value to a value that makes sense for you
$logBookFlightTime = $logBook->offset(0)->limit($logBookPagination->perPage() * $logBookPagination->currentPage())->sum('id'); // replace with your column

return [
   'logBook' => $logBookPagination,
   'totalFlightTime' => $logBookFlightTime
];

Чтобы объяснить, что я делаю, я беру часть моделей с 0 - текущую страницу и затем добавляю время полета всех этих моделей. .

...