Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP SQL转换-基本顺序依据_Php_Mysql_Sql_Cakephp_Find - Fatal编程技术网

CakePHP SQL转换-基本顺序依据

CakePHP SQL转换-基本顺序依据,php,mysql,sql,cakephp,find,Php,Mysql,Sql,Cakephp,Find,我有一个表,我想先得到所有等于26的id,然后让其余的按降序排序,比如: 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( 'co

我有一个表,我想先得到所有等于26的id,然后让其余的按降序排序,比如:

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后按降序对它们进行排序

假设您的
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))

试试这个

$this->Model->find('all', array(
  'order' => array('Model.id = 26 DESC' , 'Model.id DESC')
));

array('Model.id'DESC)
无效。你的IDE应该告诉你这一点。刚刚编辑过,忘了配对。