CakePHP 2.x Order By desc基于许多表记录

CakePHP 2.x Order By desc基于许多表记录,php,mysql,cakephp,has-many,Php,Mysql,Cakephp,Has Many,我有用户和追随者表Followers与用户有许多关系,即任何用户都可以有多个Followers Array ( [0] => Array ( [User] => Array ( [id] => 26 [seller_id_number] => [facebook_id] =

我有
用户
追随者
Followers
用户有许多关系,即任何用户都可以有多个Followers

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 26
                    [seller_id_number] => 
                    [facebook_id] => 
                    [twitter_id] => 

                )



            [Followers] => Array
                (
                    [0] => Array
                        (
                            [id] => 6
                            [user_id] => 2
                            [follower_id] => 26
                            [date_added] => 2017-09-22 03:58:21
                            [date_updated] => 2017-09-22 07:58:21

                                )

                        )

                    [1] => Array
                        (
                            [id] => 7
                            [user_id] => 52
                            [follower_id] => 26
                            [date_added] => 2017-09-22 16:35:23
                            [date_updated] => 2017-09-22 20:35:23


                        )

                        )
        )
//$this->User->virtualFields['total_flw'] = 'COUNT(`User.Followers`)';

$this->paginate = array(
             'conditions' => array( 'User.user_status'                  => 'user',
                'User.soft_delete NOT' => 'on',
                    'User.status NOT' => 'inactive',
                    'User.id NOT'                  => $this->Session->read('User.id'),
              $conditions,
            ),
            'recursive'  => 2,
            //'order'      => 'total_flw desc',
            'paramType'  => 'querystring',
            'limit'      => '24',
            'maxLimit'   => 100,
        );
        $listing_searched_users = $this->paginate('User');
我需要分页(查找)用户,并按最大追随者数量排序

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 26
                    [seller_id_number] => 
                    [facebook_id] => 
                    [twitter_id] => 

                )



            [Followers] => Array
                (
                    [0] => Array
                        (
                            [id] => 6
                            [user_id] => 2
                            [follower_id] => 26
                            [date_added] => 2017-09-22 03:58:21
                            [date_updated] => 2017-09-22 07:58:21

                                )

                        )

                    [1] => Array
                        (
                            [id] => 7
                            [user_id] => 52
                            [follower_id] => 26
                            [date_added] => 2017-09-22 16:35:23
                            [date_updated] => 2017-09-22 20:35:23


                        )

                        )
        )
//$this->User->virtualFields['total_flw'] = 'COUNT(`User.Followers`)';

$this->paginate = array(
             'conditions' => array( 'User.user_status'                  => 'user',
                'User.soft_delete NOT' => 'on',
                    'User.status NOT' => 'inactive',
                    'User.id NOT'                  => $this->Session->read('User.id'),
              $conditions,
            ),
            'recursive'  => 2,
            //'order'      => 'total_flw desc',
            'paramType'  => 'querystring',
            'limit'      => '24',
            'maxLimit'   => 100,
        );
        $listing_searched_users = $this->paginate('User');

尝试使用虚拟字段,但未成功。任何帮助都将不胜感激。

您需要在查询中加入您的
hasMany
模型,并在分页查找的
顺序中执行
计数()
:-

$this->paginate = [
    'joins' => [
        [
            'table' => 'followers',
            'alias' => 'Follower',
            'type' => 'LEFT',
            'conditions' => 'Follower.user_id = User.id'
        ]
    ],
    'group' => ['User.id'],
    'order' => ['COUNT(User.id)' => 'DESC']
];
包含关联模型在这里不起作用,因为关系是一对多的关联,这意味着Cake必须执行两个单独的查询,这就是为什么我们使用
连接