thinkphp分页数据查询时,如果设置了缓存就只显示第1页,怎么破?
即 12 >> 这个效果出来了,但是点击2,显示的还是第1页的内容。
$count=M('visitdata')->where(array('works_code'=>$get_code))->count();
$Page=new \Think\Page($count,10);
$show=$Page->show();
S($get_code.'visitdata',null); //如果不先清空缓存,就只显示第1页……
// 进行分页数据查询,如果这里设置了缓存,就只显示第1页
M('visitdata')->cache($get_code.'visitdata',60)->where(array('works_code'=>$get_code))->order('visit_id')->limit($Page->firstRow.','.$Page->listRows)->select();
$cache_visitdata=S($get_code.'visitdata');
$this->assign(array(
'code'=>$get_code,
'visitdata'=>$cache_visitdata
));
$this->assign('page',$show);
$this->display();
12 >> 这个效果出来了,但是点击2,显示的还是第1页的内容。
请问怎么破?
这是tp3.2吧,长时间不用都忘了怎么用了,题主可以这样:
获取页码
查看页码对应的缓存是否存在(缓存key可以这样写:
'content_page_' . $page
)缓存存在就返回
缓存不存在则执行数据库查询并缓存一份,下次请求进来的时候就直接走缓存了
我觉得主要问题在于缓存的key值上。
s的key加上分页标示
输出sql语句调试,先看sql执行的是什么再去找问题
你这里的:->cache($get_code.'visitdata',60)
中的$get_code.'visitdata'在分页情况下是相同的,所以,不会更新。
你把页码包涵到这个key里去应该就可以了。
雷雷