find()中的排序

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

我有一个模型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、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”