xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Посчитать число покупок товара

Опубликовано в

Посчитать число покупок конкретного товара (не дисплея):

$product_id = 123;
 
$query = db_select('field_data_commerce_product', 'fcp');
$query->addExpression('COUNT(*)');
$query->innerJoin('commerce_line_item', 'l', 'l.line_item_id = fcp.entity_id');
$query->innerJoin('commerce_order', 'o', 'o.order_id = l.order_id');
$query->condition('o.status', 'completed');
$query->condition('fcp.commerce_product_product_id', $product_id);
$count = $query->execute()->fetchField();

Чтобы посчитать число покупок всех товаров одного дисплея можно обойти товары в цикле и сложить результат прошлого запроса, а можно добавить пару лишних джоинов:

$product_display_nid = 123;
 
$query = db_select('node', 'n');
$query->addExpression('COUNT(*)');
$query->innerJoin('field_data_field_product', 'ffp', 'ffp.entity_id = n.nid');
$query->innerJoin('field_data_commerce_product', 'fcp', 'fcp.commerce_product_product_id = ffp.field_product_product_id');
$query->innerJoin('commerce_line_item', 'l', 'l.line_item_id = fcp.entity_id');
$query->innerJoin('commerce_order', 'o', 'o.order_id = l.order_id');
$query->condition('o.status', 'completed');
$query->condition('n.nid', $product_display_nid);
$count = $query->execute()->fetchField();

Запросы актуальны для дефолтных названий полей:
$product_display->field_product
$line_item->commerce_product

Написанное актуально для Commerce 1
Похожие записи

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании