阅读:3145回复:0
在 Magento 中如何使用集合查询条件
集合是一个包含其他型号的机种型号,它基本上是用在Magento处理的产品清单(即从类别或捆绑选项),但不是唯一的。
TO DO:解释如何Magento的实现集合 – 使用此解释如何Magento的实现代码模型中的一个集合,使人们可以学会写自己的藏品 这是一个简单的例子,加载一些产品集合从一个类别,并命令他们在自己的产品名称使用Magento的API的。 $collection = Mage::getModel('catalog/category')->load($categoryId) ->getProductCollection() ->addAttributeToSort('name', 'ASC');使用多个字段排序,您可以调用链接到该集合的方法 addAttributeToSort(preferred) $collection = Mage::getModel('module/model_name')->getCollection() ->addAttributeToSort('order', 'ASC') ->addAttributeToSort('last_name', 'ASC') ->addAttributeToSort('first_name', 'ASC')TODO:使用Magento的API使用的情况下,不是Zend_Db_Select的。 您也可以通过IF/THEN语句,但一定要使用正确引用表的字段。 $collection = Mage::getModel('module/model_name')->getCollection();$collection->getSelect()->order( array('IF(`order`>0, `order`, 9999) ASC', 'last_name ASC', 'first_name ASC') );在此示例中,将按顺序字段,排序表然后按上次的名称,然后按名字、 凡订单是否大于零,是秩序正在小于或等于零,所有升序。 联接表 若要添加 SQL 联接到选择 $collection = Mage::getModel('module/model_name')->getCollection();$collection->getSelect()->join( array('table_alias'=>$this->getTable('module/table_name')), 'main_table.foreign_id = table_alias.primary_key', array('table_alias.*'), 'schema_name_if_different');在此示例中的联接方法采用 alias⇒table_name 密钥对,然后使用 main_table 引用原始的选择中,标准的 join 子句的数组然后在联接中要检索的字段的数组 (默认为 *),可以作为最后一个参数指定不同的架构。 复审 → 默认为内部联接,其他人可以使用: →joinInner() →joinLeft() →joinRight() →joinFull() →joinCross() →joinNatural() 请参阅 lib/Zend/Db/Select.php 的源码。 集合操作方法 Varien_Data_Collection Varien/Data/Collection.php [table][tr][td]addFilter($field, $value, $type = ‘and’)[/td][td][/td][/tr][tr][td]addItem(Varien_Object $item)[/td][td][/td][/tr][tr][td]clear()[/td][td][/td][/tr][tr][td]count()[/td][td][/td][/tr][tr][td]distinct($flag)[/td][td][/td][/tr][tr][td]each($obj_method, $args=array())[/td][td][/td][/tr][tr][td]getAllIds()[/td][td][/td][/tr][tr][td]getCacheKey()[/td][td][/td][/tr][tr][td]getCacheLifetime()[/td][td][/td][/tr][tr][td]getCacheTags()[/td][td][/td][/tr][tr][td]getColumnValues($colName)[/td][td][/td][/tr][tr][td]getCurPage($displacement = 0)[/td][td][/td][/tr][tr][td]getFirstItem()[/td][td][/td][/tr][tr][td]getFlag($flag)[/td][td][/td][/tr][tr][td]getItemByColumnValue($column, $value)[/td][td][/td][/tr][tr][td]getItemById($idValue)[/td][td][/td][/tr][tr][td]getItems()[/td][td][/td][/tr][tr][td]getItemsByColumnValue($column, $value)[/td][td][/td][/tr][tr][td]getIterator()[/td][td][/td][/tr][tr][td]getLastItem()[/td][td][/td][/tr][tr][td]getLastPageNumber()[/td][td][/td][/tr][tr][td]getNewEmptyItem()[/td][td][/td][/tr][tr][td]getPageSize()[/td][td][/td][/tr][tr][td]getSize()[/td][td][/td][/tr][tr][td]hasFlag($flag)[/td][td][/td][/tr][tr][td]isLoaded()[/td][td][/td][/tr][tr][td]loadData($printQuery = false, $logQuery = false)[/td][td][/td][/tr][tr][td]load($printQuery = false, $logQuery = false)[/td][td][/td][/tr][tr][td]removeItemByKey($key)[/td][td][/td][/tr][tr][td]setCacheKey($key)[/td][td][/td][/tr][tr][td]setCacheTags($tags)[/td][td][/td][/tr][tr][td]setCurPage($page)[/td][td][/td][/tr][tr][td]setDataToAll($key, $value=null)[/td][td][/td][/tr][tr][td]setFlag($flag, $value = null)[/td][td][/td][/tr][tr][td]setOrder($field, $direction = self::SORT_ORDER_DESC)[/td][td][/td][/tr][tr][td]setPageSize($size)[/td][td][/td][/tr][tr][td]toArray($arrRequiredFields = array())[/td][td][/td][/tr][tr][td]toOptionArray()[/td][td][/td][/tr][tr][td]toOptionHash()[/td][td][/td][/tr][tr][td]toXml()[/td][td][/td][/tr][tr][td]walk($callback, array $args=array())[/td][/tr][/table]Varien_Data_Collection_Db Varien/Data/Collection/Db.php 继承Varien_Data_Collection,除了上面的方法(重新)定义如下: [table][tr][td]addBindParam($name, $value)[/td][td][/td][/tr][tr][td]addFieldToFilter($field, $condition=null)[/td][td][/td][/tr][tr][td]addOrder($field, $direction = self::SORT_ORDER_DESC)[/td][td][/td][/tr][tr][td]distinct($flag)[/td][td][/td][/tr][tr][td]getConnection()[/td][td][/td][/tr][tr][td]getData()[/td][td][/td][/tr][tr][td]getIdFieldName()[/td][td][/td][/tr][tr][td]getSelect()[/td][td][/td][/tr][tr][td]getSelectCountSql()[/td][td][/td][/tr][tr][td]getSize()[/td][td][/td][/tr][tr][td]initCache($object, $idPrefix, $tags)[/td][td][/td][/tr][tr][td]loadData($printQuery = false, $logQuery = false)[/td][td][/td][/tr][tr][td]load($printQuery = false, $logQuery = false)[/td][td][/td][/tr][tr][td]printLogQuery($printQuery = false, $logQuery = false, $sql = null)[/td][td][/td][/tr][tr][td]resetData()[/td][td][/td][/tr][tr][td]setConnection($conn)[/td][td][/td][/tr][tr][td]setOrder($field, $direction = self::SORT_ORDER_DESC)[/td][td][/td][/tr][tr][td]unshiftOrder($field, $direction = self::SORT_ORDER_DESC)[/td][/tr][/table]筛选器的条件代码 [table][tr]Attribute CodeSQL EquivalentDescription[/tr][tr]eq[td]=[/td][td][/td][/tr][tr]neq[td]!=[/td][td][/td][/tr][tr]like[td]LIKE[/td][td][/td][/tr][tr]nlike[td]NOT LIKE[/td][td][/td][/tr][tr]in[td]IN ()[/td][td][/td][/tr][tr]nin[td]NOT IN ()[/td][td][/td][/tr][tr]is[td]IS[/td][td][/td][/tr][tr]notnull[td]IS NOT NULL[/td][td][/td][/tr][tr]null[td]IS NULL[/td][td][/td][/tr][tr]moreq[td]>=[/td][td][/td][/tr][tr]gt[td]>[/td][td][/td][/tr][tr]lt[td]=[/td][td][/td][/tr][tr]lteq[td]=[/td][td]for use with dates[/td][/tr][tr]to[td]addAttributeToFilter('field_name', array( 'in' => array(1, 2, 3), ));$collection->addAttributeToFilter('date_field', array( 'from' => '2000-09-10', ));$collection->addAttributeToFilter('date_field', array( 'from' => '10 September 2000', 'to' => '11 September 2000', 'date' => true, // specifies conversion of comparison values ));$collection->addAttributeToFilter('field_name', array( 'notnull' => true, ));$collection->addAttributeToFilter('field_name', 1); // tests for equality// Add OR condition:$collection->addAttributeToFilter(array( array( 'attribute' => 'field_name', 'in' => array(1, 2, 3), ), array( 'attribute' => 'date_field', 'from' => '2000-09-10', ), ));Mage_Eav_Model_Entity_Collection Mage/Eav/Model/Entity/Collection/Abstract.php 继承上述方法Varien_Data_Collection_Db,除了(重新)定义了以下:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||