2013-06-07 16 views
13

Birleştirme tablosu ile birlikte Cakephp sayfalandırma sıralaması tablo alanları için çalışmıyor. Ancak, özel sql için sorgu çalışmasına katılın. Lütfen çıkmama yardım edin.Birleştirme tablosu alanı ile Cakephp sayfalandırma çalışma çalışmıyor

Örnek kodun aşağısına bakın .. Siparişim için Artist.name birleştirme tablosu alanına sahibim.

$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

... neyden geldin? Bazı kodları sağlayın ve ne istediğinizi daha iyi açıklayın, lütfen iki satırlı "soru" ile yardım etmek zordur – Nunser

+0

Örnek kod ekledim. kontrol et. Teşekkürler –

cevap

16

Bu CakePHP'de bir hatadır. Bununla birlikte, bunu yapmak için bir numara vardır.

Birincil alanınıza sanal alan eklemelisiniz.

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

Ve şimdi, artist_name tarafından sıralayabilirsiniz:

birincil modeli Şarkı olduğunu varsayarsak, aradığınız sayfalandırmak önce bu eklemek gerekir.

+0

Sıralama için sanal alanı kullanamazsınız .. CakePHP Kılavuzu'nu okuyun - http://book.cakephp.org/2.0/en/models/virtual-fields.html#limitations-of-virtualfields –

+0

alana göre sırala. Benim durumumda bir yardım bu – Dashrath

+1

bu bir cankurtaran oldu ve sıralama & sayfalama için kusursuz çalıştı, teşekkür ederim! – WOUNDEDStevenJones