Magento集合:字段发生计数

时间:2012-06-13 17:22:34

标签: php mysql magento

假设我有以下名为inventory的实体:

enter image description here

我想知道是否存在数据库,sql或magento操作或任何其他方法:

enter image description here

我通过遍历整个集合并插入临时表来解决这个问题:即

$inventorySet = Mage::getModel('custom/module')->getCollection(*);
foreach($inventorySet as $item)
{
    $this->insertItem($item->getSku());
}

}

public function insertItem($sku)
{
    //insert sku if it does not exist in the temp set
    // if it does exists add one to the QTY field
}

然后我可以检索我想要的东西。我没有看到它的问题,但我的实体比示例大得多,以及包含2000-15000行之间的任何数据的集合。有没有更有效的方法呢?

编辑:在单词中,我想在集合中搜索“sku”字段的出现次数,并返回一组唯一的sku以及在初始集合中找到它的次数。

1 个答案:

答案 0 :(得分:3)

要从集合中获取一组特定的列值,可以使用getColumnValues()方法。

例如,使用Magento产品集合,这将返回一个包含每个产品的sku属性值的数组:

$collection = Mage::getResourceModel('catalog/product_collection')
    ->addAttributeToSelect('sku');

$skus = $collection->getColumnValues('sku');

最后,要回答问题的第二部分,要计算每个唯一值的出现次数:

array_count_values($skus);

这将为您提供一个很好的关联数组sku =>发生次数。