0

Mage_Sales_Model_Order.php のカスタム属性を使用して、特定の製品の処理時間にアクセスしようとしています$handlingtime = $this->getProduct()->getAttributeText('fig_handling_time');

しかし、注文メールを送信するたびにエラーが発生しますFatal error: Call to a member function getAttributeText() on a non-object in /home/japena/public_html/app/code/local/Mage/Sales/Model/Order.php on line 1320

私は一日中調査し、さまざまなコードを試しましたが、製品にアクセスできないという結論に達したか、$this->getProduct()またはMage::getModel('catalog/product')試してみました

$_product = Mage::getModel("catalog/product")->load($_product->getId()); $handlingtime = $_product->getData('fig_handling_time');

$product = Mage::getModel('catalog/product')->load($item->getId()); $handlingtime = $product->getAttributeText('fig_handling_time');

$handlingtime = Mage::getModel('catalog/product')->load($_item['product_id'])->getAttributeText('fig_handling_time');

$handlingtime = Mage::getModel('catalog/product')->load($product_id)->getAttributeText('fig_handling_time');

私が感謝するアイデアは何もうまくいかないようです。

4

1 に答える 1

0

//最初に属性 ID を取得します

$audienceAttributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','session_audience');
//Now Load the attribute
$audienceAttribute = Mage::getModel('catalog/resource_eav_attribute')->load($audienceAttributeId);

//ここで、属性値を微調整するために使用する製品コレクションを取得します。//グループ化された製品のみの属性値が必要でした。カテゴリフィルターなどを追加できます

$productCollection = Mage::getModel('catalog/product')->getCollection()
->addStoreFilter(Mage::app()->getStore())
->addAttributeToSelect('session_audience')
->addAttributeToSort('session_audience', 'asc')
->addAttributeToFilter('type_id', array('eq' => 'grouped'));

// コレクションの製品 ID を取得します

$productCollectionIds = $productCollection ->getAllIds();

//ここで、データベースにクエリを実行して、指定された製品 ID の属性値を取得します。//これは、使用していた属性のタイプであるため、catalog_product_entity_varchar テーブルから選択していることに注意してください。

$read = Mage::getSingleton('core/resource')->getConnection('core_read');
$select = $read->select();
$select->from('catalog_product_entity_varchar')
->where('attribute_id = ?', $audienceAttributeId)
->where('entity_id IN (?)', $productCollectionIds );

//print_r($select->__toString());die();

//Now get the ids for the attribute values.

$result = $read->query($select);
$attributeOptionIds = array();
while($row = $result->fetch()){
$attributeOptionIds = array_merge($attributeOptionIds, explode(',', $row['value']));
}
array_unique($attributeOptionIds);
//print_r($audienceOptions);die();

//ここで、ID の実際の値をコレクションとして取得し、その値で何かを行います。

$filteredAudienceCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
->setPositionOrder('asc')
->setAttributeFilter($audienceAttributeId)
->setStoreFilter($audienceAttribute->getStoreId())
->addFieldToFilter('main_table.option_id', array('in' => $attributeOptionIds))
->load();
于 2013-08-02T06:10:16.523 に答える