cakephp使用paginate和order

时间:2011-02-16 11:58:02

标签: cakephp

HI, 为什么不工作“订单”功能?

$this->paginate = array(
                'limit' => 5,
                'order' => array(
                    'User.name' => 'desc'
                ),
                'fields' => array('Post.id', 'Post.title', 'User.name AS aut_name'),                        
                'joins' => array(
                    array(
                        'table' =>'users',
                        'alias' =>'User',
                        'type' =>'LEFT',
                        'conditions' => array(
                            'Post.user_id = User.user_id'
                        )
                    )
                )
        );  

        $posts = $this->paginate();
        $this->set(compact('posts'));

数据库结构:

posts:
id, title,body, created, updated, user_id

users:
user_id, name

3 个答案:

答案 0 :(得分:1)

快速查看代码...用户表中是否存在字段user_id?

'conditions' => array(
    'Post.user_id = User.id'
)

答案 1 :(得分:1)

由于您在User.name As aut_name中指定了fields,除非User.nameUser.name fields,否则您无法按'order' => array( 'aut_name' => 'desc' ), 订购}列表。或者使用:

{{1}}

注意:这仅适用于初始查询,要从用户模型中使用虚拟字段的视图中按aut_name排序。

另外,正如@Min所说,你的条件是否正确?

答案 2 :(得分:1)

针对同一问题添加解决方案:

这项工作对于cakePHP 2.3.4

CakePHP Paginate conditions on Join Table