我有一个表格,我想让所有的id首先等于26,然后让其余的按降序排序,如下所示:
row id
--- --
1 26
2 26
3 26
4 27
5 25
6 24
通常会导致:
select id
from table
order by id=26 desc, id desc
我应该如何在Cake中构建find()
?这就是我的想法:
$this->Model->find('all', array(
'conditions' => array('Model.id' => 26),
'order' => array('Model.id' => 'DESC')
));
但是我应该如何判断Cake检索剩下的id并在检索到所有等于26的id之后按降序对它们进行排序?
答案 0 :(得分:5)
试试这个。
$this->Model->find('all', array(
'order' => array('Model.id = 26 DESC' , 'Model.id DESC')
));
答案 1 :(得分:0)
假设您的id
字段是CakePHP约定所定义的primaryKey,那么您的查询将只返回一个结果。因此,排序与此无关。
我还建议使用find('first')
来阻止您以数字方式对单个结果进行索引。
$this->Model->find('first', array('conditions' => array('id' => $id)));
如果您想要返回此单条记录,然后返回所有其他记录,我会将其与find('all')
相反。
$this->Model->find('all', array('conditions' => array('id !=' => $id)));