0

我知道在处理集合时如何限制字段,但我想知道是否可以在使用 getModel()->load($id) 时限制所选字段。

我的思考过程是如果我知道我使用的 ID:

Mage::getModel('model')->load($id)

相对于:

Mage::getModel('model')->getCollection()->addFieldToFilter('id', $id)->getFirstItem();

问题是 load($id) 返回所有内容。我知道我可以在集合上使用 addFieldToSelect。使用 load() 时是否有等价物?当我用谷歌搜索时,我得到了收集方法。

谢谢,GG

编辑:我只想补充一点,如果收集方式是它的完成方式,那很好。我只是想确保它不能使用 load() 来完成。

4

2 回答 2

2

您可以尝试加载仅包含一项的集合(就像您现在所做的那样),并选择您想要使用的属性:

addAttributeToSelect('you_attribute_code_here')

这将返回一个集合(尽管包含一个项目),其中仅包含您希望返回的属性。例子:

$productIds = array(166);
$collection = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToSelect('description')
    ->addFieldToFilter('entity_id', array('in' => $productIds));

$product = $collection->getFirstItem();
于 2012-12-19T22:04:24.070 回答
2

不,除了完全重写模型代码之外,没有其他方法可以使用该集合,这可能不是您想要做的。模型加载调用只能用于加载完整条目 - 您可以指定用于加载的属性。例如:

Mage::getModel('catalog/product')->load($sku,'sku')

将按其 sku 加载产品。

事实上,模型加载本身只是通过执行以下操作来遵循它的资源:

$this->_getResource()->load($this, $id, $field);

但是资源加载方法也不提供过滤特定属性的能力,因此您将始终加载完整包或使用集合。

于 2012-12-19T22:22:28.880 回答