Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
vinegredz

Как игнорировать всякую сортировку в 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

Поделиться сообщением


Ссылка на сообщение

Нашел решение, делюсь со всеми. Чтобы самостоятельно задать сортировку записей в базе данных, нужно использовать функцию 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 на стэковерфлоу.

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

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

×
×
  • Создать...