Magento 获取未加载所有属性的相关产品

Posted

技术标签:

【中文标题】Magento 获取未加载所有属性的相关产品【英文标题】:Magento get related products not having all attributes loaded 【发布时间】:2017-08-22 23:46:06 【问题描述】:

我正在接手一个项目,看到之前的开发人员添加了一个自定义相关产品关联。所以他实现了一个函数来让关联的集合看起来像这样

/**
 * Retrieve collection CustomRelated product
 *
 * @return Mage_Catalog_Model_Resource_Product_Link_Product_Collection
 */
public function getCustomRelatedProductCollection()

    $collection = $this->getLinkInstance()->useCustomRelatedLinks()
        ->getProductCollection()
        ->setIsStrongMode();
    $collection->setProduct($this);
    return $collection;

然后在phtml文件中,他是这样叫出来的

$upsell_products = $_product->getCustomRelatedProductCollection();

然后他在 foreach 中使用该集合,集合中的每个元素都使用模型“目录/产品”,但不知何故,它没有加载足够的属性,如价格和名称

只有当我像这样再次调用加载函数时它才会加载所有属性

Mage::getModel('catalog/product')->load($p->getId())

我不想这样做,因为重新加载模型毫无意义,我还是 Magento 的新手,所以我不确定如何让上面的 get 集合完全加载产品模型,有什么想法吗?

【问题讨论】:

您是否正在尝试获取相关产品?还是您想获得相关产品?哪一个? @Nickool 你能帮忙解释一下两者之间的区别吗?之前的开发者实现了产品之间的自定义关联,所以我不知道它应该称为相关还是关联,就像你买这个你也会喜欢这个 【参考方案1】:

您可以像下面这样加载需要的属性(名称、价格)。

public function getCustomRelatedProductCollection()

    $collection = $this->getLinkInstance()->useCustomRelatedLinks()
        ->getProductCollection()
        ->addAttributeToSelect(array("name", "price")) 
        ->setIsStrongMode();
    $collection->setProduct($this);
    return $collection;

【讨论】:

谢谢,这可行,但它与 Jitendra 的答案相同,我只能将 1 个答案标记为解决方案 没关系。没有任何问题。仅供参考,这是仅加载具有必需属性的集合的最佳方式。如果您选择使用'*',则它是具有所有属性的负载集合。因此,如果我们在数据库中有很多属性,就会出现查询性能问题。【参考方案2】:

//我在您的代码中添加了新行。请立即检查。

public function getCustomRelatedProductCollection()

    $collection = $this->getLinkInstance()->useCustomRelatedLinks()
        ->getProductCollection()
        ->setIsStrongMode();
    $collection->setProduct($this);
    $collection->addAttributeToSelect('*'); //New line added by me.
    return $collection;

【讨论】:

这行得通,谢谢!为什么不默认为“select *”?

以上是关于Magento 获取未加载所有属性的相关产品的主要内容,如果未能解决你的问题,请参考以下文章

Magento 按组加载产品属性?

基于产品属性的Magento(麦进斗)过滤器配送方式

Magento 1修改与库存更新相关的产品属性

在Magento | Magento教程中按属性(SKU名称等)加载类别或产品

如何从magento 2中的可配置产品中获取简单产品

magento中根据用户的id获取用户的所有订单以及每个订单中的物品 以及物品的相关属性