Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Как игнорировать всякую сортировку в 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 недели спустя...
Опубликовано:
  • Автор

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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.