Заказ в find () - PullRequest
       40

Заказ в find ()

0 голосов
/ 19 октября 2011

У меня есть модель Орг . В модели Org у меня есть $ hasAndBelongsToMany = array ('Patient', 'Project', 'Category'); В orgs виде действия контроллера я получаю данные из базы данных с $ this-> set ('org', $ this-> Org-> find ('first', array ('condition' => array ('id' => $ id)))); Результат в порядке, но я хочу изменить порядок. Я хочу получить результат заказа Пациент по имени, Проект по имени и Категория по идентификатору. Как использовать ORDER BY для пациента, проекта, категории в find ()?

1 Ответ

1 голос
/ 19 октября 2011

Предполагая, что это 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'
        )
    ));
?>

Если вы выполняете поиск сначала по уникальному полю (например, по идентификатору), вы можете использовать встроенный помощник findByFIELDNAME:

<?php
    $org = $this->Org->findById($id);
    $this->set(compact(array('org')));
...