2011-06-03 109 views
0

我有一个分页呼叫,如$users = $this->paginate('User');CakePHP分页两次

但后来我打电话更新$users阵列与一些东西(第三方)。我如何得到分页再次调用自己?

$resultsPerPage = 10; 

    $this->paginate = array 
    (
     'conditions' => array 
     (
      'User.name' => $query 
     ), 
     'limit' => $resultsPerPage 
    ); 

然后我做的:$users = $this->paginate('User');

然后我采取在第一页的那些user_ids返回的设置,并将它们传递到另一个系统(我做的API调用,并没有到该系统的数据库访问)。如果更新了某些$users阵列数据,则会为每个实例执行$this->save()更新(外部代码也一样)。但是,这使得$users阵列过时。如果我再次调用相同的数据应该更新它?但paginate不会执行另一个数据库调用?

+0

请添加更多信息。对此很难给出很好的答案。 – alexdd55 2011-06-03 07:33:28

+1

$ users数组发生了什么变化? ...你不能像这样设置分页条件.... var $ paginate = array('limit'=> 25,'order'=> array('Post.title'=>'asc')) ;在调用分页方法之前? – 2011-06-03 07:33:30

+0

添加更多注释 – cdub 2011-06-03 07:40:16

回答

1

你在做什么听起来像你做错了。 api调用不应该在控制器中完成。这是模型/数据源所要做的。然而,这是你可以做你所爱的东西的一种方式。

第一个电话之后这样做以下

$this->params['named']['page'] = isset($this->params['named']['page']) ? $this->params['named']['page'] + 1 : 2; 

是说增加了页码买一个,如果它的设置,或使第2页。这会欺骗分页程序,以为你是在下一页。你可以再次调用$ this-> paginate()来获得下一个集合。

cake使用params中的页面设置限制x,y。