Join 分页器->;使用联接模型排序()不起作用

Join 分页器->;使用联接模型排序()不起作用,join,pagination,cakephp-2.2,Join,Pagination,Cakephp 2.2,我的模型关联链: ArchitectPurchase belongsTo ArchitectProfile belongsTo User 我的行动: $this->ArchitectPurchase->recursive = -1; $this->ArchitectPurchase->Behaviors->attach('Containable'); $this->paginate['joins'] = array(

我的模型关联链:

ArchitectPurchase belongsTo ArchitectProfile belongsTo User
我的行动:

    $this->ArchitectPurchase->recursive = -1;
    $this->ArchitectPurchase->Behaviors->attach('Containable');

    $this->paginate['joins'] = array(
        array(
            'table' => 'architect_profiles',
            'alias' => 'ArchitectProfileJoin',
            'type' => 'inner',
            'conditions' => array(
                'ArchitectProfileJoin.id = ArchitectPurchase.architect_profile_id'
            )
        ),
        array(
            'table' => 'users',
            'alias' => 'User',
            'type' => 'inner',
            'conditions' => array(
                'User.id = ArchitectProfileJoin.user_id'
            )
        )           
    );

    $this->paginate['order'] = 'User.name DESC';

    $this->paginate['contain'] = array(
        'ArchitectProfile' => array(
            'fields' => array('ArchitectProfile.id'),
            'User' => array(
                'fields' => array('User.name')
            )
        )
    );

    $this->set('architectPurchases', $this->paginate());
此操作工作正常,按User.name DESC.对结果进行排序,但在使用创建的链接时

echo $this->Paginator->sort('User.name')
在我看来,这是行不通的

查看核心文件,我发现PaginatorComponent的validateSort方法是问题所在:

            if ($object->hasField($field)) {
                $order[$alias . '.' . $field] = $value;
            } elseif ($object->hasField($key, true)) {
                $order[$field] = $value;
            } elseif (isset($object->{$alias}) && $object->{$alias}->hasField($field, true)) {
                $order[$alias . '.' . $field] = $value;
            }
由于用户模型与ArchitectPurchase模型没有直接关联,因此

$order = array()
而不是

$order = array('User.name' => 'asc')
我尝试使用$whitelist参数,但仍然无法工作

所以我不得不破解核心(noooo!!!),从第345行到第363行进行评论,以使其正常工作


我是做错了什么,还是这是2.2.1版的问题?

谢谢你发布这篇文章,我实际上也遇到了同样的问题,你对这个问题的见解让我得以解决

如果有人感兴趣,我在CakePHP的问题跟踪器上发布了一条消息,但基本上他们说它不会被修复,并提供了两条建议来绕过这个问题


我修复它的方法是,我强制模型与我感兴趣的字段order by关联。

不是答案;这应该作为评论发布。我不能评论他的帖子。我想这是因为我需要一个最低限度的声誉,而我没有。