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〜15000行のデータセットも含まれています。これを行うためのより効率的な方法はありませんか?

編集:つまり、コレクションで「sku」フィールドの出現を検索し、一意のSKUの配列と最初のコレクションで見つかった回数を返したいと思います。

4

1 に答える 1

3

コレクションから特定の列値のセットを取得するには、メソッドを使用できますgetColumnValues()

たとえば、Magento製品コレクションを使用すると、すべての製品のsku属性値を含む配列が返されます。

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

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

最後に、質問の2番目の部分に答えるために、それぞれの一意の値の発生をカウントします。

array_count_values($skus);

これにより、sku=>発生数の優れた連想配列が得られます。

于 2012-06-13T17:47:19.577 に答える