2013-06-07 4 views
13

조인 테이블 정렬을 사용한 Cakephp 페이지 매김이 조인 테이블 필드에서 작동하지 않습니다. 하지만 사용자 정의 SQL 쿼리를 잘 작동합니다. 나 좀 도와 줘.Cakephp 페이지 매김 (조인 테이블 필드 정렬이 작동하지 않음)

아래 샘플 코드를 참조하십시오. 아티스트 이름이 테이블 필드를 순서대로 나열합니다.

$this->paginate = array(
     'fields' => array(
      'id', 
      'Song.title', 
      'Song.date', 
      'Artist.id AS artist_id', 
      'Artist.name AS artist_name', 
      'COUNT(SongViews.id) AS views' 
     ), 
     'group' => array('ArtistsSong.song_id'), 
     'recursive' => 0, 
     'limit' => 20, 
     'joins' => array(
      array(
       'table' => 'tbl_artists_songs', 
       'alias' => 'ArtistsSong', 
       'conditions'=> array('Song.id = ArtistsSong.song_id') 
      ),array(
       'table' => 'tbl_artists', 
       'alias' => 'Artist', 
       'conditions'=> array('Artist.id = ArtistsSong.artist_id') 
      ),array(
       'table' => 'tbl_song_views', 
       'alias' => 'SongViews', 
       'type' => 'left', 
       'conditions'=> array('SongViews.song_id = ArtistsSong.song_id') 
      ), 
     ), 
     'order' => array('Artist.name'=>'asc') 

    ); 
+0

... 무엇에서 나오나요? 몇 가지 코드를 제공하고 원하는 것을 더 잘 설명하십시오. 두 줄의 "질문"으로 도울 수 없습니다. – Nunser

+0

샘플 코드를 추가했습니다. 확인해 봐. 감사합니다 –

답변

16

이것은 CakePHP의 버그입니다.

그러나 여기에는 속임수가 있습니다.

기본 모델에 가상 필드를 추가해야합니다.

$this->Song->virtualFields = array(
    'artist_name' => 'Artist.name' 
); 

을 그리고 지금, 당신은 artist_name으로 정렬 할 수 있습니다

기본 모델은 노래입니다 가정하면, 호출 PAGINATE 전에 추가해야합니다.

+0

당신은 정렬을위한 가상 필드를 사용할 수 없습니다 .. CakePHP 매뉴얼 읽기 - http://book.cakephp.org/2.0/en/models/virtual-fields.html#limitations-of-virtualfields –

+0

와 함께 사용할 수 있습니다. 필드로 주문하십시오. 내 경우에는 도움이된다 – Dashrath

+1

이것은 생명의 은인이었고 정렬 및 페이지 매김을 위해 완벽하게 작동했습니다. 감사합니다! – WOUNDEDStevenJones

관련 문제