Автор Тема: Характеристики товара в отчёте  (Прочитано 551 раз)

21 Июнь 2019, 09:56:06
  • Новичок
  • *
  • Сообщений: 6
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день! как сделать, так чтобы в отчёте выводились характеристик товара по его id?
Написал вот такой sql запрос, но странно отрабатывает.

Select ps_product.id_product, ps_feature_lang.name, ps_feature_value_lang.value
From ps_product
Left Join ps_feature_product On ps_feature_product.id_product = ps_product.id_product
Left Join ps_feature_lang On ps_feature_lang.id_feature = ps_feature_product.id_feature
Left Join ps_feature_value_lang On ps_feature_value_lang.id_feature_value = ps_feature_product.id_feature_value

21 Июнь 2019, 14:14:19
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16676
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Комбинации товара нужно достать?
21 Июнь 2019, 14:22:49
Ответ #2
  • Новичок
  • *
  • Сообщений: 6
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Комбинации товара нужно достать?
Нужен отчет вида:
артикул товара
цена
его технические характеристики
21 Июнь 2019, 14:26:52
Ответ #3
  • Новичок
  • *
  • Сообщений: 6
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Комбинации товара нужно достать?

Я написал вот такой запрос

Select DISTINCT ps_product.id_product as featureProdName, ps_feature_lang.name AS featureName, ps_feature_value_lang.value AS featureValue, reference, price
From ps_product
Inner Join ps_feature_product On ps_feature_product.id_product = ps_product.id_product
Inner Join ps_feature_lang On ps_feature_lang.id_feature = ps_feature_product.id_feature
Inner Join ps_feature_value_lang On ps_feature_value_lang.id_feature_value = ps_feature_product.id_feature_value

UNION

SELECT T1.id_product, reference, T2.name, Tps.price, IF(LENGTH(TRIM(T1.ean13)) = 0, T1.id_product, T1.ean13) AS ean13
FROM ps_product T1
INNER JOIN ps_product_shop Tps ON (Tps.id_product = T1.id_product)
INNER JOIN ps_product_lang T2 ON (T2.id_product = T1.id_product)

UNION

SELECT T1.id_product, T1.reference, T2.name, (Tps.price + Tpas.price) AS price, IF(LENGTH(TRIM(T1.ean13)) = 0, T1.id_product_attribute, T1.ean13) AS ean13
FROM ps_product_attribute T1
INNER JOIN ps_product_attribute_shop Tpas ON (Tpas.id_product_attribute = T1.id_product_attribute)
INNER JOIN ps_product_shop Tps ON (Tps.id_product = T1.id_product)
INNER JOIN ps_product_lang T2 ON (T2.id_product = T1.id_product)
LIMIT 120;

На картинке показано, что он возвращает. Но если это все вставлять в отчет то каждую новую строчку дублируется артикул товара и его цена, а надо, чтобы артикул с ценой были вверху, а снизу только характеристик данного товара.

21 Июнь 2019, 16:33:35
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Можно использовать функцию getAttributeCombinations класса Product.php.
$attributes = new Product('id товара')->getAttributeCombinations($context->id_lang);Или можно sql запрос из этой функции взять.
21 Июнь 2019, 16:35:11
Ответ #5
  • Новичок
  • *
  • Сообщений: 6
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно использовать функцию getAttributeCombinations класса Product.php.
$attributes = new Product('id товара')->getAttributeCombinations($context->id_lang);Или можно sql запрос из этой функции взять.

Как это использовать?
21 Июнь 2019, 20:45:45
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле, в файле php, с помощью которого формируете отчеты.