CakePHP:无法按多个标准订购

时间:2013-12-13 17:00:58

标签: php mysql sql cakephp cakephp-2.0

我在CakePHP上,我已经阅读the documentation检索数据,它清楚地表明可能有多个ORDER BY。但是,我无法让它发挥作用。只用一个就可以正常工作,但是当我把它改成一个有两个字符串的数组时,似乎都不适用。我做错了什么?

private function _bundle_users( $report ) {

    $this->loadModel("User");
    $conditions = array(
        'ReportsUser.report_id' => $report['Report']['id']
    );

    //$order = 'ReportsUser.created DESC'; //THIS WORKS FINE
    $order = array( //THIS SEEMS TO RESULT IN BOTH GETTING IGNORED
            'ReportsUser.created DESC', 
            'User.last_name ASC',
            );
    $this->User->bindModel(array('hasOne' => array('ReportsUser')), false);
    $this->paginate = array('conditions'=>$conditions, 'contain'=>array('ReportsUser', 'Attempt'=>array('order' => 'Attempt.created DESC'), 'Tag', 'Resume', 'School'),
        'order'=>$order
        );
    $users = $this->Paginate('User');
    return $users;
}

我认为我做的与this example完全相同,但bindModel()除外。也许这是一个相关的线索。

UPDATE1

这可以按预期工作:$order = 'ReportsUser.created DESC';

但忽略了这一点:$order = array('ReportsUser.created DESC');

似乎数组语法是问题的一部分。

UPDATE2

当我使用key =>时,也会忽略数组语法。值格式:'ReportsUser.created' => 'DESC'

UPDATE3 感谢@Leonard,这个有效,尽管文档说的是:

$order = 'ReportsUser.created DESC, User.last_name ASC';

2 个答案:

答案 0 :(得分:1)

不熟悉CakePHP,但仔细阅读文档,我试试看:

$order = array(
    'ReportsUser.created' => 'desc',
    'User.last_name' => 'asc',
);

答案 1 :(得分:0)

根据文档,这不是的方法,但你尝试过:

$order = 'ReportsUser.created DESC, User.last_name ASC';