2013-06-07 9 views
13

Pagakowanie Cakephp z połączonym sortowaniem tabel nie działa dla pól tabeli łączenia. Ale dla niestandardowej kwerendy sprzężenia sql działa poprawnie. Proszę, pomóż mi wyjść.Pagakowanie Cakephp z połączonym sortowaniem pól tabeli nie działa.

Zobacz poniżej przykładowy kod ... Mam Artist.name dołączyć pole tabeli w kolejności.

$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

... wyjść z czego? Podaj trochę kodu i wyjaśnij, co chcesz, proszę, trudno jest pomóc dwuliniowemu "pytaniu". – Nunser

+0

Dodałem przykładowy kod. Sprawdź to. Dzięki –

Odpowiedz

16

Jest to błąd w CakePHP.

Istnieje jednak pewna sztuczka, aby to zrobić.

Powinieneś dodać wirtualne pole do swojego podstawowego modelu.

Zakładając, podstawowy model jest piosenka, należy dodać to przed wywołaniem paginate:

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

A teraz można sortować według artist_name.

+0

Nie możesz użyć wirtualnego pola do sortowania .. Przeczytaj Podręcznik CakePHP - http://book.cakephp.org/2.0/en/models/virtual-fields.html#limitations-of-virtualfields –

+0

działa dobrze w użyciu zamówienie według pola. co jest pomocne w moim przypadku – Dashrath

+1

to był ratownik i działał bezbłędnie do sortowania i stronicowania, dziękuję! – WOUNDEDStevenJones

Powiązane problemy