分页器->;在CakePHP 2.2中使用contain进行排序
我正在使用包含行为,我希望能够像往常一样对数据进行排序,但我遇到了麻烦 这可能是因为我要排序的列不是paginate表上的列,而是contain表上的列 订阅表仅包含“用户id”和“发布id” 在控制器处,我有:分页器->;在CakePHP 2.2中使用contain进行排序,cakephp,cakephp-2.0,cakephp-2.1,cakephp-2.2,Cakephp,Cakephp 2.0,Cakephp 2.1,Cakephp 2.2,我正在使用包含行为,我希望能够像往常一样对数据进行排序,但我遇到了麻烦 这可能是因为我要排序的列不是paginate表上的列,而是contain表上的列 订阅表仅包含“用户id”和“发布id” 在控制器处,我有: $this->paginate = array( 'conditions' => array('Subscription.user_id' => $this->Session->read('Auth.User.id')), 'paramTy
$this->paginate = array(
'conditions' => array('Subscription.user_id' => $this->Session->read('Auth.User.id')),
'paramType' => 'querystring',
'limit' => 20,
'contain'=> array('User', 'Post' => array('Priority', 'Status'))
);
$this->set('subscriptions', $this->paginate('Subscription'));
我认为:
<!-- example of not working sort -->
<th class="td_subject"><?php echo $this->Paginator->sort('subject'); ?></th>
我是这样打印的:
foreach ($subscriptions as $subscription):
echo ...
echo '<td>'.h($subscription['Post']['subject'].'</td>';
echo ...
endforeach;
foreach($subscriptions as$subscription):
回声。。。
echo'.h($subscription['Post']['subject'].');
回声。。。
endforeach;
在这种情况下如何使用分页?谢谢。在这种情况下不要使用包含,请手动加入表:
$this->paginate = array(
'conditions' => array('Subscription.user_id' => $this->Session->read('Auth.User.id')),
'paramType' => 'querystring',
'limit' => 20,
'joins'=>array(
array(
'table'=>'users',
'alias'=>'User',
'conditions'=>array(
'Subscription.user_id = User.id
)
),
array(
'table'=>'posts',
...
),
array(
'table'=>'priorities',
...
),
array(
'table'=>'status',
...
)
)
);
你的看法:
<?php echo $this->Paginator->sort('Post.subject', 'Subject'); ?>
我无法让它工作。订阅与Post和用户模型相关。如果我在联接中添加它们,它会显示:“非唯一表/别名:'User'”。因此,如果我删除它们,只添加带有Post的相关表,例如优先级和状态,它会显示:未知列'Post.priority\u id',引用联接条件。
<?php echo $this->Paginator->sort('Post.subject', 'Subject'); ?>