Magento中addAttributeToFilter和addFieldToFilter之间的区别?

use*_*690 6 php magento

Magento中addAttributeToFilter和addFieldToFilter有什么区别?我创建了一个自定义属性YES/NO.但是当我试图拉动产品系列时,它们都不适合我.它没有过滤任何东西.

    $Products = Mage::getModel('catalog/product')->getCollection();
    $Products->addAttributeToSelect('*');
    $Products->addFieldToFilter('amazon_listed',1);
    $Products->addFieldToFilter('status',Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
    $Products->load();
Run Code Online (Sandbox Code Playgroud)

Dus*_*shi 7

addAttributeToFilter()用于过滤EAV集合.

addFieldToFilter()用于过滤非EAV集合.


seb*_*ebi 6

addFieldToFilter将根据表catalog_product_entity中的数据库中的列过滤产品.

addAttributeToFilter将根据您在集合中包含的属性过滤产品.

在您的情况下,您必须使用addAttributeToFilter,如下所示:

$Products->addAttributeToFilter('amazon_listed',array('eq' => 1));
$Products->addAttributeToFilter('status',array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED));
Run Code Online (Sandbox Code Playgroud)