1

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

对于项目的要求,我需要添加一个自定义属性以在 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();

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

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

有人可以帮助我吗?谢谢

4

1 回答 1

2

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

addAttributeToFilter('in_googleshopping_feed', array('eq', 0));
于 2012-07-05T13:41:28.453 回答