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

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

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

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

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

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

Запрос получить

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

0
AliAsghar 15 Фев 2020 в 23:27

2 ответа

Лучший ответ

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


$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
AliAsghar 5 Мар 2020 в 20:26

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

$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 до текущей страницы и затем добавляю время полета всех этих моделей.

0
f_i 16 Фев 2020 в 05:42