magento的addAttributeToFilter是一个可以在Magento产品集合调用的函数。简言之,它添加到WHERE条件的MySQL查询的一部分用于从数据库中提取的产品集合。 $_products = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect(array('name', 'product_url', 'small_image')) ->addAttributeToFilter('sku', array('like' => 'UX%')) ->load(); 上面的代码,会得到一个产品的集合,每个产品有它的名字,网址,价格和小的图像,它的数据阵列中装入。通过一个SKU以UX进模糊查询,该产品将收集过滤,包含唯一的产品。
addAttributeToFilter条件语句 等于:eq $_products->addAttributeToFilter('status', array('eq' => 1)); 不等于: neq $_products->addAttributeToFilter('sku', array('neq' => 'test-product')); Like:like $_products->addAttributeToFilter('sku', array('like' => 'UX%')); 注意like是可以包含SQL通配符,如百分号。 Not Like:nlike $_products->addAttributeToFilter('sku', array('nlike' => 'err-prod%')); In:in $_products->addAttributeToFilter('id', array('in' => array(1,4,74,98))); 参数还可以接受一个数组的值。 Not In:nin $_products->addAttributeToFilter('id', array('nin' => array(1,4,74,98))); NULL:null $_products->addAttributeToFilter('description', 'null'); Not NULL:notnull $_products->addAttributeToFilter('description', 'notnull'); 大于:gt $_products->addAttributeToFilter('id', array('gt' => 5)); 小于:lt $_products->addAttributeToFilter('id', array('lt' => 5)); 大于或等于:gteq $_products->addAttributeToFilter('id', array('gteq' => 5)); 小于或等于: lteq $_products->addAttributeToFilter('id', array('lteq' => 5));
addFieldToFilter() 关于addFieldToFilter()的一些用法请看:http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/using_collections_in_magento
调试SQL查询 // Method 1 Mage::getModel('catalog/product')->getCollection()->load(true); // Method 2 (Quicker, Recommended) $collection = Mage::getModel('catalog/product')->getCollection(); echo $collection->getSelect(); 方法1和方法2都是打印查询的,但各自有略微不同的方式。方法1,打印查询以及装载产品,而方法2将只查询对象转换为一个字符串(即会打印出的SQL语句)。第二种方法是肯定更好,更快,因为它会被执行,但我有参考他们都在这里。 在一个侧面说明,我将很快被写上getSelect()函数的文章,因为它开辟了一个门在Magento集合,让他们(和你)真正的力量! (责任编辑:最模板) |