@vlad1337
Ad astra

Поможете найти ошибку в PHP коде?

Добрый день всем,

Сейчас переделываю один модуль для Opencart и встала задача подключения к базе данных.
Есть идеи, почему не работает?
Информация, которую вытаскиваю из базы лежит в category_description>type_prefix .

Вот изначальный код:
public function getProducts($allowed_categories, $vendor_required = false) {
$query = $this->db->query("SELECT p.*, pd.name, pd.description, m.name AS manufacturer, p2c.category_id, IFNULL(ps.price, p.price) AS price, ps.price AS special, wcd.unit AS weight_unit,
GROUP_CONCAT(DISTINCT CAST(pr.related_id AS CHAR) SEPARATOR ',') AS rel
FROM " . DB_PREFIX . "product p JOIN " . DB_PREFIX . "product_to_category AS p2c ON (p.product_id = p2c.product_id)
" . ($vendor_required ? '' : 'LEFT ') . "JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id)
LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)

...

GROUP BY p.product_id");
return $query->rows;
}


Вот изменённый:
public function getProducts($allowed_categories, $vendor_required = false) {
$query = $this->db->query("SELECT p.*, pd.name, pd.description, pd.type_prefix, m.name AS manufacturer, p2c.category_id, IFNULL(ps.price, p.price) AS price, ps.price AS special, wcd.unit AS weight_unit,
GROUP_CONCAT(DISTINCT CAST(pr.related_id AS CHAR) SEPARATOR ',') AS rel
FROM " . DB_PREFIX . "product p JOIN " . DB_PREFIX . "product_to_category AS p2c ON (p.product_id = p2c.product_id)
" . ($vendor_required ? '' : 'LEFT ') . "JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id)
LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)
LEFT JOIN " . DB_PREFIX . "category_description pd ON (p.type_prefix = pd.type_prefix)

...

GROUP BY p.product_id");
return $query->rows;
}


Буду признателен за вашу помощь!

Upd

Заметил, что неплохо бы добавить в модуль атрибут typePrefix, а то ругается поддержка Яндекса без него. Было принято решение это исправить. Так вот, добавил в базу данных новый столбец, добавил поле для категорий, в общем, теперь можно записать своё значение typePrefix в базу через менюшку категорий админки. С этим ок всё.
Однако, нужно же и вывести это значение в YML список.

В начале добавил typePrefix в разрешённые поля(изменял файл catalog/controller/feed/yamarket.php):
$allowed = array('url', 'price', 'currencyId', 'categoryId', 'picture', 'store', 'pickup', 'delivery', 'name', 'typePrefix', 'vendor', 'vendorCode', ‘model’...

Окей, работает. И теперь - момент истинны: нужно вывести информацию, которая хранится в базе по адресу category_description>type_prefix вот сюда:
$data['currencyId'] = $currency_default['code'];
      $data['categoryId'] = $product['category_id'];

      $data['typePrefix'] = $oc_category_description['type_prefix’]; //Вот сюда. Здесь пытался вывести значение.

      $data['vendor'] = $product['manufacturer'];
      $data['vendorCode'] = $product['model'];

Ну и всё. Не могу получить, хоть убейся. Разные делал варианты кода. Также пытался делать изменения в /catalog/model/yamodel.php, где идёт подключение к бд(насколько я понимаю). Тогда вообще часть с offer пропадала.

Оба файла:
1
2
  • Вопрос задан
  • 322 просмотра
Пригласить эксперта
Ответы на вопрос 1
LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)
LEFT JOIN " . DB_PREFIX . "category_description pd ON (p.type_prefix = pd.type_prefix)


два одинаковых алиаса на разные таблицы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы