记录一下Magento模型集合Model Collection中addFieldToFilter()方法常用的过滤条件。以下参数也同样适用于产品实体的addAttributeToFilter()方法。 //等于 Equals: eq $_products->addAttributeToFilter('status', array('eq' => 1)); //不等于 Not Equals - neq $_products->addAttributeToFilter('sku', array('neq' => 'test-product')); //Like - like $_products->addAttributeToFilter('sku', array('like' => 'UX%')); //Not Like - nlike $_products->addAttributeToFilter('sku', array('nlike' => 'err-prod%')); //In - in $_products->addAttributeToFilter('id', array('in' => array(1,4,98))); //Not In - nin $_products->addAttributeToFilter('id', array('nin' => array(1,4,98))); //NULL - null $_products->addAttributeToFilter('description', 'null'); //Not NULL - notnull $_products->addAttributeToFilter('description', 'notnull'); //大于 Greater Than - gt $_products->addAttributeToFilter('id', array('gt' => 5)); //小于 Less Than - lt $_products->addAttributeToFilter('id', array('lt' => 5)); //大于等于 Greater Than or Equals To- gteq $_products->addAttributeToFilter('id', array('gteq' => 5)); //小于等于 Less Than or Equals To - lteq $_products->addAttributeToFilter('id', array('lteq' => 5));
也可以有: array( array('attribute'=> 'someattribute','like' => 'value'), array('attribute'=> 'otherattribute','like' => 'value'), array('attribute'=> 'anotherattribute','like' => 'value'), ) );
实例: $collection->addFieldToFilter('max_item_count', array( array('gteq' => 10), array('null' => true), ) ) ->addFieldToFilter('max_item_price', array( array('gteq' => 9.99), array('null' => true), ) ) ->addFieldToFilter('max_item_weight', array( array('gteq' => 1.5), array('null' => true), ) );
Which results in this SQL: SELECT `main_table`.* FROM `shipping_method_entity` AS `main_table` WHERE (((max_item_count >= 10) OR (max_item_count IS NULL))) AND (((max_item_price >= 9.99) OR (max_item_price IS NULL))) AND (((max_item_weight >= 1.5) OR (max_item_weight IS NULL)))
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集合,让他们(和你)真正的力量! Magento的集合实际上就是一个包含其它模型的模型,所以我们可以用Product集合来取代数组存放一组产品。集合除了可以提供一个更为便捷的模型分组数据结构,还提示一些可用于操作实体集合的一些特定方法,其中较为有用的方法有:
这里仅列出了一部分集合方法,每个集合依据相应的实体类型采用不同的方法。例如,customer集合 Mage_Customer_Model_Resource_Customer_Collection对应一个特定方法groupByEmail(),从 名称就可以看出它是一个对内部实体email的分组。 Magento模型集合addFieldToFilter常用过滤条件 Magento的addFieldToFilter方法支持如下条件表达式:
我们还可以使用其它类型的过滤,比如在上面的日期过滤代码后添加如下代码来获取可见产品: $productCollection->addAttributeToFilter('visibility', 4); 这个可见性属性是由产品用来控制产品在何处显示的特殊属性,它可以有如下值:
|