Magento-无法检索产品模型中添加的集合的自定义属性

时间:2012-07-05 13:32:16

标签: magento collections

我无法理解Magento中的完整行为。接下来,我将描述问题:

对于项目的要求,我需要添加自定义属性,以便在GoogleShopping的Feed中排除多个产品。然后我用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);

这是我的疑问,为什么不收集这个属性?

但是,我可以在下一个代码段中检索Product_Model的值:

$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('*')方法将所有字段添加到集合中。

有人可以帮我吗? 感谢

1 个答案:

答案 0 :(得分:2)

第一个看起来是addAttributeToFilter的第二个参数必须是数组。像这样:

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