Cakephp分页与连接表排序是不工作的连接表字段。但自定义sql连接查询工作正常。请帮助我出来。
看下面的示例代码..我已经把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')
);
4条答案
按热度按时间gopyfrb31#
这是CakePHP中的一个错误。
不过,有一个诀窍可以做到。
应在主模型中添加虚拟字段。
假设您的主模型是Song,您应该在调用paginate之前添加以下内容:
现在,您可以按
artist_name
排序。zqry0prt2#
这个问题在5年前就被提出了,但我在CakePHP 3中遇到了同样的问题。我意识到我需要将字段列入白名单,以便进行排序:
Paginator会自动将原始表中的字段列入白名单,但不会将JOINed表中的字段列入白名单。
xggvc2p63#
o0lyfsai4#
按关联模型中的列排序需要设置
sortWhitelist
。在HTML中,您必须在表格标题中设置以下行: