Как отсортировать данные таблицы привязок в 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'); ?>