質問

このスクリプトを使用して、製品とProduct_Optionテーブルに参加しようとしています

<?php

ini_set('memory_limit',"1000M");
ini_set('display_errors', '1');
set_time_limit(0);
define('MAGENTO', realpath(dirname(__FILE__)));
require_once MAGENTO . '/app/Mage.php';

Mage::app();

    $_productCollection = Mage::getModel('catalog/product')->getCollection();

    $_productCollection->getSelect()->join(array('mep' => "catalog_product_option"), "e.entity_id = mep.product_id", array('mep.*'));

    echo count($_productCollection);

?>
.

しかしそれは誤りを得た:

Fatal error: Uncaught exception 'Exception' with message 'Item (Mage_Catalog_Model_Product) with the same id "29" already exist' in /home/m1/public_html/lib/Varien/Data/Collection.php:373 Stack trace: #0 /home/m1/public_html/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(265): Varien_Data_Collection->addItem(Object(Mage_Catalog_Model_Product)) #1 /home/m1/public_html/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(1055): Mage_Eav_Model_Entity_Collection_Abstract->addItem(Object(Mage_Catalog_Model_Product)) #2 /home/m1/public_html/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(871): Mage_Eav_Model_Entity_Collection_Abstract->_loadEntities(false, false) #3 /home/m1/public_html/lib/Varien/Data/Collection.php(752): Mage_Eav_Model_Entity_Collection_Abstract->load() #4 [internal function]: Varien_Data_Collection->count() #5 /home/m1/public_html/product_options.php(24): count(Object(Mage_Catalog_Model_Resource_Product_Collection)) #6 {main} thrown in /home/m1/public_html/lib/Varien/Data/Collection.php on line 373
.

誰もが問題なのか知っていますか?

役に立ちましたか?

解決

magentoはコレクション内の同じIDを持つ2項目を許可しません。そして、製品コレクションから始めてオプションコレクションに参加した場合、少なくとも1つの製品に2つのオプションがある場合は、重複IDを取得します。
オプションコレクションを取得して製品コレクションに参加するには、
このことの欠点は、オプション付きの製品だけを手に入れることです。そして、あなたはコレクション内のすべての製品属性を取得しません。

$collection = Mage::getModel('catalog/product_option')->getCollection();
$collection->getSelect()->join(array('mep' => "catalog_product_entity"), "e.product_id = mep.entity_id", array('mep.*'));
.

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