2014-02-21 3 views
3

У меня есть атрибут cdn_image_name, который отлично подходит для примерно 90 000 товаров. Недавно редакторы контента сообщили, что имеется около трех продуктов, которые не содержат изображений. Я точно задал вопрос методу getData() Magento.Magento getData() не возвращает значение

Это аналогичный код оригинала.

$cdnImageName = $product->getData('cdn_image_name'); 

Я также попытался:

$cdnImageName = $product->getCdnImageName(); 
$cdnImageName = $product->getAttributeText('cdn_image_name'); 

В интерфейсе администратора Magento я вижу поле заполняется с правильным значением. Я проверил БД, он также имеет значение на месте. Он просто возвращает «null» с любым из способов, описанных выше.

Примечание: нет опечатки, я проверил «n» раз, он работает практически для всех продуктов, но несколько.

+0

Привет, вы пробовали получить набор атрибутов? $ attributeSetModel = Mage :: getModel ("eav/entity_attribute_set"); $ attributeSetModel-> load ($ product-> getAttributeSetId()); Можете ли вы проверить, что это возвращает? – Chiragit007

+0

Мариан, я надеюсь, что есть проблема в наборе атрибутов .... Этот атрибут не присваивается в наборе атрибутов –

+0

попытаться запустить процесс индекса –

ответ

1

Вы можете использовать прямой запрос SQL затем принести его в Magento:

// Create read and write connections to the database 
    $resource = Mage::getSingleton('core/resource'); 
    $connRead = $resource->getConnection('core_read'); 

    // find out attribute id of cdn_image_name from the Magento database 
    $attributeId = 123; 

    $sqlCdnImageName = "SELECT `cpet`.`value` 
      FROM `catalog_product_entity` `cpe` 
      INNER JOIN `catalog_product_entity_text` `cpet` 
      ON `cpe`.`entity_id` = `cpet`.`entity_id` 
      WHERE `cpet`.`attribute_id` = $attributeId 
      AND `cpe`.`entity_id` = " . $product->getId() . ";"; 

    $cdnImageName = $connRead->fetchOne($sqlCdnImageName); 
+1

Прямые SQL-запросы для этого типа проблем не рекомендуется. –

2

, если вы используете пользовательский атрибут, то вы можете использовать его как

$cdnImageName = Mage::getResourceModel('catalog/product')->getAttributeRawValue($product_new->getData("entity_id"), "cdn_image_name", $storeID); 


$product_new->getData("entity_id") = your product id 

EDIT

Также проверьте

$_item = $this->getProduct()->getId(); 
$_resource = $this->getProduct()->getResource(); 
$optionValue = $_resource->getAttributeRawValue($_item, 'cdn_image_name', Mage::app()->getStore()); 
echo $optionvalue; 

надеюсь, что это будет работать для вас.

+0

Первый фрагмент кода работает так же, как и мой, он возвращает правильное значение для продуктов thr, которые мой код делает, и false для тех продуктов, о которых идет речь. Второй не работает. На данный момент ничего не изменилось, я все еще в одном месте. Спасибо –

+1

Я нашел ваш ответ, глядя на другой сценарий. Мой атрибут UPC не возвращался для каких-либо продуктов. Ваш подход 'getResourceModel()' работал для меня в этом случае - спасибо! – STW

0

Вы можете попробовать это

$cdnImageName = Mage::getResourceModel('catalog/product')->getAttributeRawValue($product->getId(), 'cdn_image_name'); 

Благодарности

+0

Прошу прощения, я все равно получаю «ложное» значение. –

3

Эта проблема может возникнуть, если вы установили «, используемые в список продуктов "в" нет ". Просто измените его в «Управление атрибутом».

Смежные вопросы