Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
vinegredz

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

Recommended Posts

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

 

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

 

{{$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. Как задать новую сортировку знаю. Можете подкинуть идеи или файл с документацией, который надо прочесть?

Share this post


Link to post
Share on other sites
Как игнорировать всякую сортировку в 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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...