带有连接表字段排序的 Cakephp 分页不起作用

标签 cakephp sorting join pagination

带有连接表排序的 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/

相关文章:

javascript - 排序数组,但忽略开头的一些特定字符

mysql - 如何在mysql中获取每个订单订购的商品数量和成本总额

mysql - Django ORM 在 SQL Join 中创建 Phantom Alias

javascript - 使用 js 助手将数据发送到 Controller

algorithm - 当键占用超过一个单词的内存时,合并排序/基数排序的复杂性是否会改变

php - CakePHP 最佳实践 : Admin with or without routing

javascript - 有人可以解释这些 JS 函数之间的区别,一个有回调,另一个没有回调

apache-spark - 具有 32GB 或更多内存的 spark worker 遇到 fatal error

php - cakephp - 正确连接

mysql - phpmyadmin 正在将“保存”到 mysql 数据库而不是“从 cakephp