Как отсортировать данные таблицы привязок в cakephp 2.0

Мне нужны данные из различных таблиц. Я связываю их с помощью CakePHP $hasMany переменная. Данные получены успешно. Но мне нужно отсортировать результат от $hasMany Таблица.

например, У меня две таблицы

  • Survey
  • Questions

Сейчас Survey Таблица содержит данные, связанные с опросом, как title, id, purpose а также Questions Таблица содержит вопрос для соответствующего опроса. Я связываю таблицу вопросов с опросом в модели опроса. Теперь у меня есть поле в Questions таблица с именем ordering, Мне нужно получить данные в таком порядке.

Как я могу получить это таким образом?

Пожалуйста, помогите мне.

2 ответа

Решение

Если вы хотите отсортировать данные напрямую при получении из базы данных

Вы можете определить порядок по умолчанию при добавлении связей между таблицами в ваших моделях. В вашей модели опроса:

var $hasMany = array(
    'Question' => array(
        'order' => 'ordering DESC'
    )
);

См. http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html.

Вы также можете определить пользовательский порядок при получении данных с вашего контроллера в вашем условном массиве, http://book.cakephp.org/2.0/en/models/retrieving-your-data.html:

$conditions = array(
    'order' => array('Question.ordering DESC')
);

Если вы разбиваете результаты на страницы с помощью компонента paginator, вы можете настроить его, как показано в следующем примере book.cakephp.org/2.0/en/core-libraries/components/pagination.html#query-setup:

public $paginate = array(
    'order' => array(
       'Question.ordering' => 'desc'
    )
);

Если вы хотите отсортировать данные, представленные в представлении

Здесь вы можете использовать помощника по разбиению на страницы (вместе с компонентом разбиения на страницы в контроллере) как:

echo $this->Paginator->sort('Question.ordering');

см. book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html#creating-sort-links

Извините, что удалил 'http: //' в двух последних ссылках, но я не могу публиковать более двух ссылок (<10 повторений).

В CakePHP вы можете сортировать по связанным таблицам. но вам нужно отсортировать по столбцу, вы должны использовать что-то вроде этого:

<?php echo $this->Paginator->sort('Question.ordering'); ?>
Другие вопросы по тегам