我之前使用的是D方法,但是这样每次在Model中获取列表的时候都会将所有的数据放到内存中,在Controller中使用时会速度非常慢,数据量再大点就提示超内存了。因为每次取数据的时候是在model中做的,而拆分页码是在Controller中做的,这样就不科学了。
那问题来了,如何在不破坏MVC结构的前提下使用分页呢?
Controller中:
$Garden = D('garden');
$request =(array)I('request.');
$glist = $Garden -> getList($title);
$total = $Garden -> count();
$listRows = 12;
$page =new \Think\Page($total,$listRows,$request);
$volist = array_slice($glist,$page ->firstRow,$page ->listRows);
$p = $page ->show();
$this ->assign('_list',$volist);
$this ->assign('_page',$p ? $p : '');
Cookie('_forward',$_SERVER['REQUEST_URI']);
$this -> display();Model中 public function getList($garden_name){
$Building = M('building');
if($garden_name){
$where = 'garden_name = '.$garden_name;
}else{
$where='1=1';
}
$list = $this->where($where) -> select();
foreach ($list as $key => $value) {
$list[$key]['salecount'] = $Building ->where('loupanmingcheng='.$value['id'])->count();
}
return $list;
} 最佳答案