分页器>排序使用包含在 CakePHP 2.2



我正在使用包含行为,我希望能够一如既往地对数据进行分类,但是我有麻烦。

可能是因为我要排序的列不是分页表上的列,而是包含表上的列。

订阅表仅包含" user_id"one_answers" post_id"。

在控制器我有:

$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>

例如,受试者的数据包含在数组 $ subscription 的带有正常格式:

$subscription['Post']['subject']

我以这种方式打印:

foreach ($subscriptions as $subscription): 
    echo ...
    echo '<td>'.h($subscription['Post']['subject'].'</td>';
    echo ...
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'); ?>

最新更新