2012-10-24 1 views
0

나는 동작을 포함하고 있으며 항상 데이터를 정렬 할 수 있기를 원하지만 문제가 있습니다.Paginator-> CakePHP 2.2에 포함 된 것을 사용하여 정렬

정렬하려는 열이 페이지 매김 테이블의 열이 아니라 포함 테이블에있는 열 일 수 있습니다.

구독 테이블에는 "user_id"및 "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['Post']['subject'] 

그리고 내가 이런 식으로 인쇄 :

foreach ($subscriptions as $subscription): 
    echo ... 
    echo '<td>'.h($subscription['Post']['subject'].'</td>'; 
    echo ... 
endforeach; 

이 경우 페이지 매김을 어떻게 사용할 수 있습니까? 감사. 사용하지 마십시오

답변

2

수동으로 테이블을 조인,이 경우에 포함 :

$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'); ?> 
+0

. 구독은 Post 및 User 모델과 관련됩니다. 내가 조인에 추가하면 "고유 테이블/별칭이 아닙니다 : '사용자'"라고 표시됩니다. 그래서, 내가 그들을 삭제하고 우선 순위 및 상태와 같은 포스트와 함께 관련 테이블을 추가하면 다음과 같습니다. 알 수없는 열 'Post.priority_id'가 조인 조건을 참조합니다. – Alvaro