find()中的排序
我有一个模型Org。 在一个模型Org中,我有$hasandbelongostany=array('Patient','Project','Category'); 在组织控制器动作视图中,我使用 $this->set('org',$this->org->find('first',array('condition'=>array('id'=>$id))); 结果是好的,但我想改变顺序。 我要按姓名、项目名称和类别按id订购结果患者。find()中的排序,find,Find,我有一个模型Org。 在一个模型Org中,我有$hasandbelongostany=array('Patient','Project','Category'); 在组织控制器动作视图中,我使用 $this->set('org',$this->org->find('first',array('condition'=>array('id'=>$id))); 结果是好的,但我想改变顺序。 我要按姓名、项目名称和类别按id订购结果患者。 如何在find()中使用ORDER BY for Patient
如何在find()中使用ORDER BY for Patient、Project、Category?假设这是Cake,则在声明HABTM关系时,应在模型中完成关联模型的排序:
<?php
class Org extends AppModel {
var $hasAndBelongsToMany = array(
'Patient' => array(
'order' => array(
'Patient.name ASC'
)
),
'Project' => array(
'order' => array(
'Project.name ASC'
)
),
'Category' => array(
'order' => array(
'Category.id ASC'
)
)
);
}
?>
如果要按关联模型对实际结果集进行排序,可以将order数组传递给find方法:
<?php
$org = $this->Org->find('all', array(
'conditions' => array(
'Org.column_name' => $yourVar
),
'order' => array(
'Patient.name ASC',
'Project.name ASC',
'Category.id ASC'
)
));
?>
如果要先通过唯一字段(如ID)进行查找,可以使用内置的findByFIELDNAME助手:
<?php
$org = $this->Org->findById($id);
$this->set(compact(array('org')));
第一种方法适合我。第二,不要。它给出SQL错误:1054:order子句中的未知列“Patient.name”