Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Как игнорировать всякую сортировку в Helpers\Table?

Здравствуйте.

 

Написал такое:

 

{{$ids = '654,765,234,9876'}}
{{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records12', $record->url(), array(array(\IPS\Db::i()->findInSet('primary_id_field', $ids))));}}
{$table|raw}

Проблема в том, что к таблице применяется сортировка выбранная по умолчанию для базы данных. Смотрел описание функции Table\Content и не нашел как ее отключить сортировку, чтобы записи выводились именно в порядке 654,765,234,9876. Как задать новую сортировку знаю. Можете подкинуть идеи или файл с документацией, который надо прочесть?

Рекомендованные сообщения

Как игнорировать всякую сортировку в Helpers\Table?
Что значит игнорировать сортировку? Все равно будет какая-то применяться https://stackoverflow.com/questions/8746519/sql-what-is-the-default-order-by-of-queries

 

Если говорить о чисто о ORDER BY, то https://stackoverflow.com/questions/14104055/ordering-by-specific-field-value-first

  • 2 недели спустя...
  • Автор

Нашел решение, делюсь со всеми. Чтобы самостоятельно задать сортировку записей в базе данных, нужно использовать функцию FIELD() для MySQL. Например, у меня был список из ID записей 654,765,234,9876, которые хранятся в массиве $only_ids, тогда решение будет таким:

 

// Создаем условие, по которому в таблицу попадут записи ID которых есть в моем списке
{{$where[] = array(\IPS\Db::i()->in('primary_id_field', array_filter($only_ids, 'is_numeric')));}}
// Конвертируем массив в строку, чтобы ID записей были через запятую
{{$ids_string = implode(",", $only_ids);}}
// Составляю строку-условие для сортировки в таблице
{{$sort = 'FIELD(primary_id_field,' . $ids_string . ')';}}

// Ну и в общем-то собираем всю таблицу (все строки нужны, если что-то удалить, то не работает)
{{$table = new \IPS\Helpers\Table\Content('IPS\cms\Records12', \IPS\Request::i()->url(), $where);}}
{{$table->sortBy = $sort;}}
{{$table->sortOptions = array( $sort );}}
{{$table->sortDirection = 'asc';}}
{$table|raw}

Ну да, нюбай так и указал выше по ссылке на field на стэковерфлоу.

  • 3 недели спустя...
  • Автор

Да я от туда и взял информацию, но захотел просто готовый кусок кода привести, чтобы кому-то сэкономить время.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.