2012-07-05 5 views
1

Я не понимаю, как это сделать в коллекции Magento. следующий, я опишу проблему:Magento-can't восстановить пользовательский атрибут коллекции, добавленный в продукт. Модель

Для требований проектов мне нужно добавить пользовательский атрибут, чтобы исключить отдельные продукты в фиде в GoogleShopping. Затем добавить этот атрибут с установкой PHP скрипт

<?php 
    $installer = $this; 
    $installer->startSetup(); 
    $installer->addAttribute('catalog_product', 'in_googleshopping_feed', array(
    'group'     => 'General', 
    'type'      => 'int', 
    'input'     => 'select', 
    'label'     => 'In GoogleShoppint feed', 
    'global'     => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, 
    'visible'     => 1, 
    'required'     => 0, 
    'default'   => 1, 
    'visible_on_front'   => 0, 
    'is_html_allowed_on_front' => 0, 
    'sort_order'    => 32, 
    'is_configurable'   => 0, 
    'source'     => 'eav/entity_attribute_source_boolean', 
    'searchable'    => 0, 
    'filterable'    => 0, 
    'comparable'    => 0, 
    'unique'     => false, 
    'user_defined'    => false, 
    'is_user_defined'   => false, 
    'used_in_product_listing' => true 
) 
); 


    $installer->endSetup(); 

Следующая в Observer я пытаюсь получить значение этого с:

$products = Mage::getModel('catalog/product')->getCollection() 
     ->addAttributeToSelect('*') 
      //->addAttributeToSelect('in_googleshopping_feed'); 
     ->addAttributeToFilter('in_googleshopping_feed',0); 

Это мое сомнение, почему haven't своей коллекции этот атрибут?

Однако, я могу получить значение Код продукта йота следующего фрагмента кода:

$products = Mage::getModel('catalog/product')->getCollection() 
      ->addAttributeToSelect('*'); 
$prodIds=$products->getAllIds(); 
foreach($prodIds as $productId): 
    $product = Mage::getModel('catalog/product')->setStoreId('1'); 
    $product->load($productId); 
    var_dump($product->getData('in_googleshopping_feed')); 
endforeach; 

Тогда мое огромное сомнение: почему я не могу отфильтровать коллекцию моего нового атрибутом? Я думаю, что с помощью метода addAttributeToSelect ('*') все поля добавляются в коллекцию.

Может кто-нибудь помочь мне? Спасибо

ответ

2

Первое, что бросается в глаза, состоит в том, что 2-й параметр для addAttributeToFilter должен быть массивом. Например:

addAttributeToFilter('in_googleshopping_feed', array('eq', 0)); 
+0

Огромное спасибо, я думаю, что это ошибка frecueltly для работы с коллекцией. Но во многих местах ядра/сообщества я вижу addAttributeToFilter без массива. Например, в Find_Feed_Model_Import в строке 105 Magento 1.5.1.0 вы можете увидеть $ productCollection-> addAttributeToFilter ('is_imported', 1); Знаете ли вы, если в каком-то случае работаете с массивом? – davidselo

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