Как получить тип элемента котировки 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';
}