Страница 1 из 1
Сортировка задач по статусу
Добавлено: 23 апр 2015, 15:31
tolstopuz
При сортировке задач по статусу возникает ошибка:
Database Error: 1066 - Not unique table/alias: 'fc'
Query: select count(*) as total from app_entity_22 e left join app_fields_choices fc on fc.id=e.field_169 left join app_fields_choices fc on fc.id=e.field_170 where e.id>0 and ((find_in_set(23,field_171))) order by fc.sort_order asc, fc.name asc,fc.sort_order asc, fc.name asc,field_168 asc
Page: /index.php?module=items/listing
Re: Сортировка задач по статусу
Добавлено: 04 июн 2015, 10:20
sergy
Подтверждаю - есть схожая проблема при сортировке по двум полям: статус и приоритет
http://take.ms/FViWO
Во время объединения таблицы app_fields_choices назначается алиас fc
http://take.ms/ZoW5R и получаем не уникальный алиас. Попробую на выходных разобраться самостоятельно и предложить решение
Re: Сортировка задач по статусу
Добавлено: 08 июн 2015, 19:25
sergy
Итак я нашёл и исправил ошибку - возможно кому-то пригодится.
Файл
/modules/items/components/add_order_query.php
Нужно полностью заменить его содержимое на приведённое ниже
Код: Выделить всё
<?php
foreach(explode(',',$_POST['listing_order_fields']) as $i=>$order_field)
{
if(strlen($order_field)==0) continue;
$syn = 'fc'.$i;
$order = explode('_',$order_field);
$field_id = $order[0];
$order_cause = $order[1];
$listing_order_fields_id[]=$field_id;
$listing_order_clauses[$field_id] = $order_cause;
$field_info = db_find('app_fields',$field_id);
if(in_array($field_info['type'],array('fieldtype_created_by','fieldtype_date_added','fieldtype_id')))
{
$listing_order_fields[] = 'e.' . str_replace('fieldtype_','',$field_info['type']) . ' ' . $order_cause;
}
elseif(in_array($field_info['type'],array('fieldtype_dropdown')))
{
$listing_sql_query_join .= " left join app_fields_choices {$syn} on {$syn}.id=e.field_" . $field_id;
$listing_order_fields[] = "{$syn}.sort_order " . $order_cause . ", {$syn}.name " . $order_cause;
}
else
{
$listing_order_fields[] = 'field_' . $field_id . ' ' . $order_cause;
}
}
if(count($listing_order_fields)>0)
{
$listing_sql_query .= " order by " . implode(',',$listing_order_fields);
}
else
{
$listing_sql_query .= " order by e.id ";
}
Pastebin на всякий случай
http://pastebin.com/E4pwhaWc
Re: Сортировка задач по статусу
Добавлено: 27 июл 2015, 08:55
sergy
Странно что фикс не попал в обновление
Re: Сортировка задач по статусу
Добавлено: 27 июл 2015, 10:02
support
Извините, не отметил это исправление как важное и по этому пропустил.
Добавлю исправление уже в 1.6