我试图获得magento不同商店的产品价格和描述,我可以实现如下: -
foreach ($productObj->getStoreIds() as $_storeId) {
$tempStoreObj = new Mage_Core_Model_Store();
$tempStoreObj->load($_storeId);
$tempProductObj = new Mage_Catalog_Model_Product();
$tempProductObj->setStoreId($_storeId);
$tempProductObj->load($productObj->getId());
$tempPriceArray[] = array(
'websiteId' => $tempStoreObj->getWebsiteId(),
'price' => $tempProductObj->getPrice(),
'baseCurrency' => $tempStoreObj->getBaseCurrencyCode(),
);
$tempDescArray[]=array(
'descprition' => $tempProductObj->getData('description'),
'shortDescription' => $tempProductObj->getData('short_description'),
);
}
现在在上面的代码中,我首先获取特定产品的商店,然后加载商店然后再次创建产品对象并加载wrt 产品ID 和商店ID ,这样我就完成了所需的任务。
现在我的问题从这里开始,当有很多产品和许多商店出现性能问题时,加载过程使这个问题变慢。
还有其他方法可以达到同样的效果吗?
答案 0 :(得分:0)
当您想要从多个产品中获取产品时,您可以做的一件事就是使用产品系列,因此只有一个数据库查询可以获取所有产品的每个商店的信息。
这看起来像这样:
$storeId = 1; // Current Store you want to look at
$productIds = array(10,15,26); // Enter your Ids
$product = Mage::getModel('catalog/product');
$products = $product->getCollection()
->addStoreFilter($storeId)
->addAttributeToFilter('entity_id', array('in' => $productIds))
->addAttributeToSelect('price')
->addAttributeToSelect('description');
然后循环产品:
$currPrices = array();
foreach ($products as $prod) {
$currPrices[$prod->getId()] = $prod->getPrice();
}
要明确几家商店:
$currPrices = array();
$currDescriptions = array();
foreach ($productObj->getStoreIds() as $_storeId) {
$productIds = array(10,15,26); // Enter your Ids
$product = Mage::getModel('catalog/product');
$products = $product->getCollection()
->addStoreFilter($_storeId)
->addAttributeToFilter('entity_id', array('in' => $productIds))
->addAttributeToSelect('price')
->addAttributeToSelect('description');
foreach ($products as $prod) {
$currPrices[$_storeId][$prod->getId()] = $prod->getPrice();
$currDescriptions[$_storeId][$prod->getId()] = $prod->getDescription();
}
}
答案 1 :(得分:-2)
最快的方法是直接查询(当然,包装到Zend_Db_Select)来存储和产品表。
base_currency可以从core_config_data
获得产品价格可在catalog_category_product_index
中找到catalog_product_entity_text中的描述
看看
Mage_Reports_Model_Resource_Product_Index_Abstract
Mage_Reports_Model_Resource_Report_Product_Viewed_Collection
Mage_Reports_Model_Resource_Report_Product_Viewed
Mage_Reports_Model_Resource_Quote_Collection
Magento使用Zend_Db_Select,甚至是提取适配器的方法,而不是集合,以防查询速度加快。