利用時間維度統計分頁

在進行數據統計的時候,不能簡單的通過數據表數據條數進行分頁。這時,可以通過時間維度進行分頁。

//以時間作爲查詢條件進行用戶統計查詢

$start_date = request('date')['start'] ? : '';
$end_date = request('date')['end'] ? : '';

//以時間維度降序排列

//分頁的最後一條數據時間
if ($start_date) {
    $start_at = $start_date;
} else {
    //$min_date 查詢錄入用戶表裏最早一個用戶的日期(這裏使用的時間戳)
    $start_at = $min_date ? date('Y-m-d', strtotime($min_date)) : date('Y-m-d', time());
}

//分頁的第一條數據時間
if ($end_date) {
    $end_at = $end_date;
} else {
    $end_at = date('Y-m-d', time());
}

//計算第一條數據和最後一條數據兩個時間的天數差
$days = (strtotime($end_at) - strtotime($start_at)) / (24 * 60 * 60) + 1;

//分頁
$page = request('page') ?: 1;//頁碼
$per_page = request('per_page') ?: 15;//每頁顯示的條數

$max_page = ceil($days / $per_page);//最大頁數

//頁碼不在合理範圍,返回原頁面
if ($page <= 0 || $page > $max_page) {
    return back();
}

//每頁循環開始數字
$per_start = ($page - 1) * $per_page + 1;
//每頁循環結束數字
$per_end = $page * $per_page;
$per_end = ($per_end < $days) ? $per_end : $days;

$lists = [];
for ($i = $per_start - 1; $i < $per_end; $i++) {
    $date = date('Y-m-d', strtotime("{$end_at} -{$i} days"));
    //根據當天時間,作爲查詢條件,查詢業務模型數據,將數據返回結果追加到 $lists 數組裏
    ...
}

//最後將 $lists 返回到頁面展示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章