Answers:
实际上,这getAllIds
是最好的方法。例如,在产品集合资源模型中,方法如下所示:
public function getAllIds($limit = null, $offset = null)
{
$idsSelect = $this->_getClearSelect();
$idsSelect->columns('e.' . $this->getEntity()->getIdFieldName());
$idsSelect->limit($limit, $offset);
$idsSelect->resetJoinLeft();
return $this->getConnection()->fetchCol($idsSelect, $this->_bindParams);
}
因此,所有内容都可以从一个选择中检索出来,并且不需要迭代。同样在抽象资源模型中,它看起来像这样:
public function getAllIds()
{
$idsSelect = clone $this->getSelect();
$idsSelect->reset(Zend_Db_Select::ORDER);
$idsSelect->reset(Zend_Db_Select::LIMIT_COUNT);
$idsSelect->reset(Zend_Db_Select::LIMIT_OFFSET);
$idsSelect->reset(Zend_Db_Select::COLUMNS);
$idsSelect->columns($this->getResource()->getIdFieldName(), 'main_table');
return $this->getConnection()->fetchCol($idsSelect);
}
因此,Mage_Core_Model_Resource_Db_Collection_Abstract
除非另有说明,否则扩展的所有内容均应使用此功能。
您查看的方法来自基类,Varien_Data_Collection
但在其子代中被覆盖。
在这种情况下,您可以使用集合对象
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('entity_id');
[...]
do your loop
[...]
addAttributeToSelect
for entity_id
并不是真正必需的,但出于演示目的,我将其放入其中,添加您需要的字段,您就完成了!
您可以在此Wikipage上找到更多关于馆藏的信息
更优化
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->getSelect()->reset(Zend_Db_Select::COLUMNS);
$collection->getSelect()->columns('entity_id');
$collection1Ids[] = $collection->getAllIds();
$this->_getClearSelect()
。