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



我不了解Magento中集合的完整行为。 接下来,我将描述问题:

对于项目的要求,我需要添加一个自定义属性,以排除Google购物提要中的多个产品。然后我在 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();

接下来在观察者中,我尝试使用以下方法检索此值:

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

有人可以帮助我吗?谢谢

第一个一目了然的是addAttributeToFilter的第二个参数必须是数组。喜欢这个:

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

最新更新