Как получить тип элемента котировки Magento?

Сгруппированные продукты группируют простые продукты, все знают. Где-то в моем пользовательском модуле мне нужно знать, есть ли в моей корзине простой продукт (цитата) "добавлен по сгруппированному продукту" или "сам по себе"?

Я знаю, что есть таблица sales_flat_quote_item_option. Записи предметов не отличаются в sales_flat_quote_item, но в этой таблице опций есть некоторая разница. Когда вы добавляете свой простой продукт с помощью "действия добавления сгруппированного продукта", он создает строку, включающую info_buyRequest в таблице sales_flat_quote_item_option.

Я хочу определить эту запись программно.

Спасибо за любую помощь / директиву.

2 ответа

Решение

Я нашел решение. Это достаточно просто, чтобы смущать меня;

$_item->getProductType()

возвращает "сгруппированный", когда этот простой элемент появился с действием добавления сгруппированного продукта. Хотя есть логическая ошибка, потому что тип этого продукта на самом деле "простой", а не "сгруппированный".

Если вы не хотите перебирать все товары в корзине, вы можете получить идентификатор котировки и загрузить товары непосредственно из базы данных, включая фильтр типов товаров.

/** @var Mage_Sales_Model_Quote $quote */
$quoteId = Mage::getModel('checkout/cart')->getQuote()->getId();
/** @var Mage_Sales_Model_Resource_Quote_Item_Collection $quoteItems */
$quoteItems = Mage::getModel('sales/quote_item')->getCollection();
$quoteItems->addFieldToFilter('quote_id', $quoteId);
$quoteItems->addFieldToFilter('product_type', 'bundle');

if ($quoteItems->getSize() >= 1) {
    echo 'We have bundle products in the cart';
}
Другие вопросы по тегам