diff --git a/classes/ObjectModel.php b/classes/ObjectModel.php index 5b41111ef..f706ca154 100644 --- a/classes/ObjectModel.php +++ b/classes/ObjectModel.php @@ -1277,6 +1277,11 @@ abstract class ObjectModelCore { return Shop::isTableAssociated($this->def['table']) || !empty($this->def['multilang_shop']); } + + public function isMultiShopField($field) + { + return (isset($this->def['fields'][$field]) && isset($this->def['fields'][$field]['shop']) && $this->def['fields'][$field]['shop']); + } public function isLangMultishop() { diff --git a/classes/webservice/WebserviceRequest.php b/classes/webservice/WebserviceRequest.php index f4126a194..61a0aa0a7 100644 --- a/classes/webservice/WebserviceRequest.php +++ b/classes/webservice/WebserviceRequest.php @@ -1184,7 +1184,14 @@ class WebserviceRequestCore $sql_sort .= 'main_i18n.`'.pSQL($this->resourceConfiguration['fields'][$fieldName]['sqlId']).'` '.$direction.', ';// ORDER BY main_i18n.`field` ASC|DESC } else - $sql_sort .= (isset($this->resourceConfiguration['retrieveData']['tableAlias']) ? $this->resourceConfiguration['retrieveData']['tableAlias'].'.' : '').'`'.pSQL($this->resourceConfiguration['fields'][$fieldName]['sqlId']).'` '.$direction.', ';// ORDER BY `field` ASC|DESC + { + $object = new $this->resourceConfiguration['retrieveData']['className'](); + if ($object->isMultiShopField($this->resourceConfiguration['fields'][$fieldName]['sqlId'])) + $table_alias = 'multi_shop_'.$this->resourceConfiguration['retrieveData']['table']; + else + $table_alias = ''; + $sql_sort .= (isset($this->resourceConfiguration['retrieveData']['tableAlias']) ? '`'.bqSQL($this->resourceConfiguration['retrieveData']['tableAlias']).'`.' : '`'.bqSQL($table_alias).'`.').'`'.pSQL($this->resourceConfiguration['fields'][$fieldName]['sqlId']).'` '.$direction.', ';// ORDER BY `field` ASC|DESC + } } $sql_sort = rtrim($sql_sort, ', ')."\n"; }