在find()中订购

时间:2011-10-19 07:13:40

标签: find

我有一个模型组织。 在模型 Org 中,我有$ hasAndBelongsToMany = array('Patient','Project','Category'); 在 orgs 控制器操作视图中,我从数据库获取数据 $ this-> set('org',$ this-> Org-> find('first',array('condition'=> array('id'=> $ id)))); 结果还可以,但我想更改订单。 我希望订单结果患者名称,项目名称和类别ID。 如何在find()中使用ORDER BY for Patient,Project,Category?

1 个答案:

答案 0 :(得分:1)

假设这是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'
                )
            )
        );
    }
?>

如果您想对关联模型的实际结果集进行排序,可以将订单数组传递给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')));