1

假设我有以下实体,称为库存:

在此处输入图像描述

我想知道是否有数据库、sql 或 magento 操作或任何其他方法可以生成:

在此处输入图像描述

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

$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 到 15 000 行之间的任何内容。没有更有效的方法吗?

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

4

1 回答 1

3

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

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

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

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

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

array_count_values($skus);

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

于 2012-06-13T17:47:19.577 回答