Сортировка задач по статусу

Ответить
tolstopuz
Сообщения: 3
Зарегистрирован: 17 апр 2015, 15:58

Сортировка задач по статусу

Сообщение 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
sergy
Сообщения: 4
Зарегистрирован: 03 июн 2015, 15:32

Re: Сортировка задач по статусу

Сообщение sergy »

Подтверждаю - есть схожая проблема при сортировке по двум полям: статус и приоритет http://take.ms/FViWO
Во время объединения таблицы app_fields_choices назначается алиас fc http://take.ms/ZoW5R и получаем не уникальный алиас. Попробую на выходных разобраться самостоятельно и предложить решение
sergy
Сообщения: 4
Зарегистрирован: 03 июн 2015, 15:32

Re: Сортировка задач по статусу

Сообщение 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
sergy
Сообщения: 4
Зарегистрирован: 03 июн 2015, 15:32

Re: Сортировка задач по статусу

Сообщение sergy »

Странно что фикс не попал в обновление ;)
Аватара пользователя
support
Техническая поддержка
Сообщения: 9016
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Сортировка задач по статусу

Сообщение support »

Извините, не отметил это исправление как важное и по этому пропустил.
Добавлю исправление уже в 1.6
Ответить