Opencart + TecDoc

Статус
В этой теме нельзя размещать новые ответы.
Стопорится все на этой строке:
$rsModels = TDSQL::GetModels($arManuf['MFA_ID'],TDM_LANG_ID,$arIDFilter,$NOTFilter,$YearFrom,$arBrnd['trucks'],$arComSets['HIDE_USA']);

входные данные:
arManuf['MFA_ID'] = 10389 | TDM_LANG_ID = 4 | arIDFilter = | NOTFilter = | YearFrom = | arBrnd['trucks'] = 1 | arComSets['HIDE_USA'] = 0

var_dump($arManuf['MFA_ID']) = 10389
var_dump($rsModels) выдает:
{ ["Error"]=> string(10) "No records" ["Result"]=> NULL ["NumRows"]=> NULL }

Прямой поиск в базе по MFA_ID дает результат.

судя по всем проблема с SQL запросом...
а именно с его частью GROUP BY MOD_ID
кто сможет поделиться для теста файлом tdmcore/tdquery.php ?

-------------

часть проблемы решается написанием своего класса query, только возникает проблема с $arBrnd['trucks'], какая таблица/ячейка отвечает за этот фильтр?
 
Последнее редактирование:
Стопорится все на этой строке:
$rsModels = TDSQL::GetModels($arManuf['MFA_ID'],TDM_LANG_ID,$arIDFilter,$NOTFilter,$YearFrom,$arBrnd['trucks'],$arComSets['HIDE_USA']);

входные данные:
arManuf['MFA_ID'] = 10389 | TDM_LANG_ID = 4 | arIDFilter = | NOTFilter = | YearFrom = | arBrnd['trucks'] = 1 | arComSets['HIDE_USA'] = 0

var_dump($arManuf['MFA_ID']) = 10389
var_dump($rsModels) выдает:
{ ["Error"]=> string(10) "No records" ["Result"]=> NULL ["NumRows"]=> NULL }

Прямой поиск в базе по MFA_ID дает результат.

судя по всем проблема с SQL запросом...
а именно с его частью GROUP BY MOD_ID
кто сможет поделиться для теста файлом tdmcore/tdquery.php ?

-------------

часть проблемы решается написанием своего класса query, только возникает проблема с $arBrnd['trucks'], какая таблица/ячейка отвечает за этот фильтр?
какая версия модуля?
 
для проверки работы модуля включаю на непродолжительное время лог запросов:

Код:
[mysqld]
...
log=/var/log/mysql/queries.log
 
это 3.0.8 или близко от него для этой версии нет декодированного файла

а пример запроса с другой версии или метод GetModels сможете показать?

я по аналогу еще старого модуля сделал себе этот метод, но не могу разобраться с фильтром комерческий/легковой транспорт
 
а пример запроса с другой версии или метод GetModels сможете показать?

я по аналогу еще старого модуля сделал себе этот метод, но не могу разобраться с фильтром комерческий/легковой транспорт
static public function GetModels($MFA_ID, $LNG_ID, $arFilter = array(), $Not = false, $YearFrom, $CarsTrucks = 0, $NotUSA = 0) {
if ($YearFrom <= 0) {
$YearFrom = TDM_MODELS_FROM;
}
if (0 < count($arFilter)) {
if ($Not == true) {
$NOT_FILTER = " NOT ";
}
$IN_FILTER = " AND MOD_ID " . $NOT_FILTER . " IN (" . implode(",", $arFilter) . ")";
}
if (0 < $CarsTrucks) {
if ($CarsTrucks == 1) {
$CTFILTER = "MOD_PC>0 AND";
}
else {
$CTFILTER = "MOD_CV>0 AND";
}
}
if ($NotUSA == 1) {
$NOT_USA = "AND TEX_TEXT NOT LIKE \"%[USA]%\"";
}
$SQL = "SELECT MOD_ID, TEX_TEXT AS MOD_CDS_TEXT, MOD_PCON_START, MOD_PCON_END " . "FROM MODELS " . "INNER JOIN COUNTRY_DESIGNATIONS ON CDS_ID = MOD_CDS_ID " . "INNER JOIN DES_TEXTS ON TEX_ID = CDS_TEX_ID " . "WHERE " . $CTFILTER . " MOD_MFA_ID = " . $MFA_ID . " AND CDS_LNG_ID = " . $LNG_ID . " AND MOD_PCON_START > " . $YearFrom . "00 " . $IN_FILTER . " " . $NOT_USA . " " . "ORDER BY MOD_CDS_TEXT";
$resDB = new TDSQLQuery();
$resDB->QuerySelect($SQL);
return $resDB;
}


static public function GetModelByID($MFA_ID, $MOD_ID, $LNG_ID = TDM_LANG_ID) {
$SQL = "SELECT MOD_ID, TEX_TEXT AS MOD_CDS_TEXT, MOD_PCON_START, MOD_PCON_END \r\n\t\t\tFROM MODELS \r\n\t\t\t\t\tINNER JOIN COUNTRY_DESIGNATIONS ON CDS_ID = MOD_CDS_ID\r\n\t\t\t\t\tINNER JOIN DES_TEXTS ON TEX_ID = CDS_TEX_ID\r\n\t\t\tWHERE MOD_MFA_ID = " . $MFA_ID . " AND MOD_ID = " . $MOD_ID . " AND CDS_LNG_ID = " . $LNG_ID;
$resDB = new TDSQLQuery();
$resDB->QuerySelect($SQL);
return $resDB;
}
 
Спасибо большое.
Если у кого возникнет данная проблема, то вот решение:

1) Создаем новый класс запроса: /autoparts/tdmcore/tdquerynew.php;
2) Создаем в нем класс TDSQLNew и копируем метод представленный выше в него (при необходимости правим);
3) Открываем файл /autoparts/tdmcore/init.php и вставляем туда строчку require_once("tdquerynew.php");
4) Открываем файл /autoparts/tdmcore/components/models/component.php, находим $rsModels = TDSQL::GetModels... и меняем его на наш класс с методом $rsModels = TDSQLNew::GetModels...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху