質問

だから私はこのコードを使用しています:

$connection = Mage::getSingleton('core/resource')->getConnection('core_read');
$IDs = implode(',', $products);
$sql = 'SELECT * FROM `catalog_category_product` WHERE product_id IN ('.$IDs.')';
$results = $connection->fetchAll($sql);
foreach ($results as $result) {
  $this->_backupPositionData[$result['product_id'].'-'.$result['category_id']] = $result['position'];
}

DBから関連情報を使用して行を取得し、それらをループしてそれらをマッピングします。

しかし、私たち全員が知っているように、直接SQLを使用することは最も美しいものではありません。だから私は、コレクションのロードを何らかの形で使用して同じ操作を実行できるかどうかを知りたかった( foreach).

ここでの問題は、私がこれを作らなければならないかもしれないということです fetch数千の製品を使用しており、SQLはその場合、パフォーマンスで最も速いです。コレクションまたは他のオブジェクトロード技術で同じことを行うことは可能ですか?

アップデート:

製品のID(データベースが保存されたID)があります。必要なのは、各製品IDにカテゴリIDと位置をマッピングすることです。

いくつかの言葉で - 私はそのように見えるために最終結果配列が必要です:

array["product_id-category_id"]["position"]

PS私は上書きしています _saveProductCategories() fruction Mage_ImportExport_Model_Import_Entity_Product そして並んでいます 1069 それ以外の 'position' => 1 配列の特定の要素を渡します。 :)

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top