我正在使用cakephp(2.4.7)开发,我在组织我的控制器和模型以使用分页时遇到问题。
到目前为止,我把最多的逻辑放入模型中(瘦控制器,大模型)。在那里我将结果返回给控制器,在那里我设置变量以在视图上显示它。
但现在我想使用分页。这打破了我的概念,因为我不能在模型中使用分页。
什么是解决此问题的最佳解决方案?我不想重新组织我的整个结构,因为我需要在很多不同的动作和模型中进行分页。
例如:
控制器用户,动作朋友
public function friends($userid = null, $slug = null) {
$this->layout = 'userprofile';
$this->User->id = $userid;
if (!$this->User->exists()) {
throw new NotFoundException(__('Invalid User'));
}
$this->set('friends', $this->User->getFriendsFrom($userid));
}
用户模型,函数getFriendsFrom($ user_from)..我需要在不同的操作中使用此方法。
public function getFriendsFrom($user_from) {
$idToFind = $user_from;
$data = $this->FriendFrom->find('all',
array(
'conditions'=>array(
'OR'=> array(
array('user_to'=> $idToFind),
array('user_from'=> $idToFind)
),
'AND' => array(
'friendship_status' => 1
)
),
'contain' => array('UserFrom.Picture', 'UserTo.Picture')
)
);
$friendslist = array();
foreach ($data as $i) {
if ($i['FriendFrom']['user_from'] == $idToFind){
$friendslist[] = $i['UserTo'];
}
elseif ($i['FriendFrom']['user_to'] == $idToFind){
$friendslist[] = $i['UserFrom'];
}
}
return $friendslist;
}
设计这个概念以使用分页的最佳方法是什么?
由于
答案 0 :(得分:0)
使用cakephp Paginator
var $helpers = array('Paginator');
现在您调用以下方法
function index() {
$result = array(
'recursive' => -1,
'conditions' => array(...),
'contain' => array(...),
'limit' => '2'
);
// you can write the above code in your model
$this->paginate = $result;
$users = $this->paginate('User');
// Re-arrage $users
$this->set(compact('users'));
}
如果有任何问题,请告诉我。