在 CakePHP 中对我的用户模型进行分页时,我可以按一些值排序,但不能按其他值排序。例如,我可以通过created或email 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 让我按某些东西订购,而其他的却不行?