我试图通过使用getAllItems()遍历订单中的所有商品来获取订单商品ID。问题是我只得到简单的产品,即使产品有父项(用$ item-> getParentItemId()双重检查)并且不能单独看到。即使我尝试使用getAllVisibleItems(),我也只能获得简单的产品。在管理面板中,我可以看到只有可配置的产品,我没有得到,是可见的,没有一个简单的产品。
此外,是否可以拥有一个单独可见的简单产品,并且还可以与分组/可配置产品相关联?这与帖子的其他部分无关,但我也很感激这里的任何帮助。谢谢。
这是我的代码的相关部分:
foreach ($order->getAllVisibleItems() as $item)
{
$k++;
$productId = $item->getProductId();
$product = Mage::getModel('catalog/product')->load($productId);
Mage::log($k.")".$product->getTypeId()." and id is ".$item->getId(), null, "MODB.log");
if( $product->getTypeId() == 'simple' ){
if ($item->getData('row_total_incl_tax') != null){
$price = $item->getData('row_total_incl_tax');
}
if (!$item->getParentItemId){ //get simple prods data;}
else{//get parent prods data;}.......
答案 0 :(得分:0)
我认为getAllVisibleItems并不意味着"在目录中可见"
public function getAllVisibleItems()
{
$items = array();
foreach ($this->getItemsCollection() as $item) {
if (!$item->isDeleted() && !$item->getParentItemId()) {
$items[] = $item;
}
}
return $items;
}
^如果未删除产品: !$本期特价货品>请将isDeleted() &安培;&安培; 没有父产品(适用于可配置产品): !$本期特价货品> getParentItemId() 所以它是可见的。
尝试将可见性过滤器添加到集合
$collection->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);