我在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';
答案 0 :(得分:1)
不熟悉CakePHP,但仔细阅读文档,我试试看:
$order = array(
'ReportsUser.created' => 'desc',
'User.last_name' => 'asc',
);
答案 1 :(得分:0)
根据文档,这不是的方法,但你尝试过:
$order = 'ReportsUser.created DESC, User.last_name ASC';