【问题标题】:how do you get back sum('amount') for a paginated eloquent query In laravel 5?你如何在 laravel 5 中为分页的雄辩查询取回 sum('amount')?
【发布时间】:2020-05-31 05:25:44
【问题描述】:

我有一个模型 Logbook 用于飞行员和我的控制器返回

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

我想总结每个页面的总飞行时间

第一页的总飞行时间从 DB 计算,但对于第二页和下一页,$previous_total_page_time 应该是第一页和下一页的总时间。

我不知道如何临时保存变量 $page_previous_total_time 并在第二页和下一页使用它

飞行时间保存为 A Int(整数分钟)

请求是获取

in this image you see my view

【问题讨论】:

  • 我们能看到“视图”文件吗?或者至少是其中的一部分?你是在使用 GET 请求还是什么?
  • 我也想看看你到目前为止为“previous_total_page_time”做了什么
  • request is Get flight time is save as a Int (minutes in integer)
  • @EbrahimMohammed 视图文件与数据库级逻辑有什么关系?
  • 啊。我的错。可能是困了。

标签: php laravel laravel-5 collections pagination


【解决方案1】:

您可以计算每个请求的总飞行时间。这未经测试,但假设它应该可以工作。

$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 中取出一个模型 - 当前页面,然后添加所有这些模型的飞行时间。

【讨论】:

    【解决方案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 ;
    }
    
    

    【讨论】:

      猜你喜欢
      • 2015-01-02
      • 1970-01-01
      • 2018-01-26
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 2014-05-18
      相关资源
      最近更新 更多