1

在 CakePHP 中对我的用户模型进行分页时,我可以按一些值排序,但不能按其他值排序。例如,我可以通过createdemail fine 对结果进行排序,但按用户名声誉排序会返回一个看似任意顺序的用户列表。例如:

$this->paginate = array('conditions' => array('User.is_active' => true), 'limit' => 24, 'order' => array('User.created' => 'DESC'));

按预期工作,但是

$this->paginate = array('conditions' => array('User.is_active' => true), 'limit' => 24, 'order' => array('User.reputation' => 'DESC'));

没有。

起初我以为这可能是数据库问题,但是当我直接搜索数据库时,所有内容都会按预期返回和排序。

注意:我使用 MongoDB 和 ichikaway 的 CakePHP 的 MongoDB 插件;分页用户过去可以正常工作,所以我很肯定这不是插件的错误,但是某处发生了一些变化,我无法确定是什么。

最后,当我在调试信息中查看查询时,我可以看到 CakePHP 在搜索时甚至没有将订单值传递给数据库。上面的第一个搜索显示:

db.users.find( {"is_active":true}, [] ).sort( {"created":-1} ).limit( 24 ).skip( 0 )

第二个:

db.users.find( {"is_active":true}, [] ).sort( [] ).limit( 24 ).skip( 0 )

为什么 CakePHP 让我按某些东西订购,而其他的却不行?

4

1 回答 1

0

哎呀。这一个数据库错误;不知何故,创建了一条记录,其中只有几个字段(例如,_id 、created、modified和其他一些字段),这并非巧合的是我唯一可以排序的字段。删除它使一切恢复正常。

奇怪的是,进行搜索会很好,但使用相同的参数分页不会。也许它毕竟是一个插件/蛋糕错误?

于 2012-11-02T14:30:21.667 回答