如何找到分页集的每一页所涵盖的字段范围?
How can I find the range of a field covered by each page of a paginated set?
我有一个模型 Task
(id
, start_date
, end_date
, description
)。我使用 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周前”和"Today"这样的链接,跳转到包含第一个Task
的页面start_date
> NOW()-14Days,例如。
我完全理解我可以改变我的 $conditions
并在 start_date
上设置一个范围,但我想要整个集合。
接受关于如何实现相同结果的其他想法,或任何正确方向的指示。
您需要计算给定条件开始日期前后的记录数,然后除以每页的记录数,得到它所在的页数。
然而,这对用户来说不是很友好,我会这样做:
在 URL 中传递您的开始日期和范围,并根据传递的值构建您的查询,然后在您的分页设置中使用该查询。
/something/index?range=last-two-weeks
并检查范围值并对该值进行切换以设置正确的条件。这样就直接过滤掉用户真正感兴趣的记录,一目了然URL.
我结束了 运行 我的搜索两次,一次分页,一次没有。然后我浏览了未分页的结果
$pgStarts = array();
$pgCounter = 1;
foreach($tasks as $k => $task){
if(($k % $limit) == 0){
$pgStarts[$pgCounter] = $task['Task']['start_time'];
$pgCounter++;
}
}
一旦我有了每个页面的开始日期数组,我就可以轻松地更改页码的标记方式。我什至能够按小时分解关键事件(大多数任务都在这一天)。
我对结果很满意,因为我认为它为分页提供了更多上下文。我会继续寻找更好的方法,但现在就可以了。
我有一个模型 Task
(id
, start_date
, end_date
, description
)。我使用 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周前”和"Today"这样的链接,跳转到包含第一个Task
的页面start_date
> NOW()-14Days,例如。
我完全理解我可以改变我的 $conditions
并在 start_date
上设置一个范围,但我想要整个集合。
接受关于如何实现相同结果的其他想法,或任何正确方向的指示。
您需要计算给定条件开始日期前后的记录数,然后除以每页的记录数,得到它所在的页数。
然而,这对用户来说不是很友好,我会这样做:
在 URL 中传递您的开始日期和范围,并根据传递的值构建您的查询,然后在您的分页设置中使用该查询。
/something/index?range=last-two-weeks
并检查范围值并对该值进行切换以设置正确的条件。这样就直接过滤掉用户真正感兴趣的记录,一目了然URL.
我结束了 运行 我的搜索两次,一次分页,一次没有。然后我浏览了未分页的结果
$pgStarts = array();
$pgCounter = 1;
foreach($tasks as $k => $task){
if(($k % $limit) == 0){
$pgStarts[$pgCounter] = $task['Task']['start_time'];
$pgCounter++;
}
}
一旦我有了每个页面的开始日期数组,我就可以轻松地更改页码的标记方式。我什至能够按小时分解关键事件(大多数任务都在这一天)。
我对结果很满意,因为我认为它为分页提供了更多上下文。我会继续寻找更好的方法,但现在就可以了。