如何找到分页集的每个页面所覆盖的字段范围?

时间:2015-07-21 06:53:42

标签: php cakephp cakephp-2.0

我有一个模型Taskidstart_dateend_datedescription)。我使用像Paginator一样的

    $this->Paginator->settings = array(
        'Task'=>array(
            'contain'=>$contain,
            'limit'=> $limit,
            'conditions'=>$conditions,
            'order'=>'Task.start_date ASC',
            'page'=> $page,
    ));

我所追求的是能够知道被分页集的每个页面所涵盖的start_date的范围。而不是页码(即在$this->Paginator->numbers()生成的视图中)我想创建像“2周前”和“今天”这样的链接,跳转到包含第一个Task {{1}的页面}>现在() - 例如14天。

我完全理解我可以改变我的start_date并在$conditions上设置范围,但我想要整套。

打开其他关于如何获得相同结果的想法,或者指向正确方向的任何指针。

2 个答案:

答案 0 :(得分:0)

您需要计算条件的给定开始日期之前和之后的记录,然后将其除以每页的记录数以获取其所在的页面。

然而,这不是非常用户友好,而是我会这样做:

在网址中传递您的开始日期和范围,并根据传递的值构建您的查询,然后在您的分页设置中使用。

/something/index?range=last-two-weeks

检查范围值并为该值进行切换以设置正确的条件。这将通过清晰易懂的URL直接过滤用户真正感兴趣的记录。

答案 1 :(得分:0)

我最终运行了两次搜索,一次分页,一次没有。然后我经历了未分类的结果

$pgStarts = array();    
$pgCounter = 1;

foreach($tasks as $k => $task){
    if(($k % $limit) == 0){
        $pgStarts[$pgCounter] = $task['Task']['start_time'];
        $pgCounter++;
    }
}

一旦我获得了每个页面的开始日期数组,我就可以轻松更改分页号码的标记方式。我甚至能够逐个分解关键事件(大多数任务都在这一天)。

If today were Feb 2. Also, vertical align in Twitter Bootstrap is killing me

我对结果很满意,因为我认为这会给分页提供更多的上下文。我会继续寻找更好的方法,但现在这样做。