带有连接表排序的 Cakephp 分页不适用于连接表字段。但是对于自定义 sql join 查询工作正常。请帮我出来。
请参阅下面的示例代码.. 我按顺序有 Artist.name 连接表字段。
$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')
);
最佳答案
这是 CakePHP 中的一个错误。
但是,有一个技巧可以做到这一点。
您应该在主模型中添加一个虚拟字段。
假设你的主要模型是 Song,你应该在调用 paginate 之前添加它:
$this->Song->virtualFields = array(
'artist_name' => 'Artist.name'
);
现在,您可以按
artist_name
排序.
关于带有连接表字段排序的 Cakephp 分页不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986178/