Home » Magento

Magento: Very Useful Collection Functions

24 July 2010 9,644 views Popularity: 18% Share/Bookmark

There are different important functions that you can implement in your Collection object. The functions are present in Varien_Data_Collection_Db class. The class file is present in lib/Varien/Data/Collection/Db.php

Here are some of the functions that you can use in your collection object:-

/**
 * Get Zend_Db_Select instance
 */
$collection->getSelect();

/**
 * Get collection size
 */
$collection->getSelect()->getSize();

/**
 * Get sql select string or object
 */
$collection->getSelect()->getSelectSql();

/**
 * Add select order
 */
$collection->getSelect()->setOrder($field, $direction);

/**
 * Add field filter to collection
 *
 * If $attribute is an array will add OR condition with following format:
 * array(
 *     array('attribute'=>'firstname', 'like'=>'test%'),
 *     array('attribute'=>'lastname', 'like'=>'test%'),
 * )
 */
$collection->getSelect()->setOrder($field, $condition);

/**
 * Set select distinct
 */
$collection->getSelect()->distinct($flag);

/**
 * Get all data array for collection
 */
$collection->getSelect()->getData();

/**
 * Reset loaded for collection data array
 */
$collection->getSelect()->resetData();

/**
 * Print and/or log query
 */
$collection->getSelect()->printLogQuery(true, true);

More functions below:-

Varien_Data_Collection_Db class extends Varien_Data_Collection class. Here are some more functions present in Varien_Data_Collection class:-

/**
 * Get current collection page
 */
$collection->getSelect()->getCurPage();

/**
 * Retrieve collection last page number
 */
$collection->getSelect()->getLastPageNumber();

/**
 * Retrieve collection page size
 */
$collection->getSelect()->getPageSize();

/**
 * Retrieve collection all items count
 */
$collection->getSelect()->getSize();

/**
 * Retrieve collection first item
 */
$collection->getSelect()->getFirstItem();

/**
 * Retrieve collection last item
 */
$collection->getSelect()->getLastItem();

/**
 * Retrieve collection items
 */
$collection->getSelect()->getItems();

/**
 * Clear collection
 */
$collection->getSelect()->clear();

You can also use the select functions as present in Zend_Db_Select class. This class file is present in lib/Zend/Db/Select.php

Hope this helps. Thanks.

From Mukesh Chapagain's Blog, post Magento: Very Useful Collection Functions

Related posts:

  1. Magento: Adding OR and AND query condition to collection
  2. Magento: Set Random Order in Collection using RAND()
  3. Magento: Redirect functions
  4. Magento: Get country and region collection
  5. Magento: How to filter product collection using 2 or more category filters?
  6. Magento: Join, filter, select and sort attributes, fields and tables
  7. Magento: Get Product Collection by Type
  8. Magento: How to search or filter by multiselect attribute in admin grid?
  9. Magento: How to get attribute name and value?
  10. Magento: How to select, insert, update, and delete data?
  • Hajikelist

    looks like the call for this comment block is missing in your example:
    /**
    * Add field filter to collection
    *
    * If $attribute is an array will add OR condition with following format:
    * array(
    * array(‘attribute’=>’firstname’, ‘like’=>’test%’),
    * array(‘attribute’=>’lastname’, ‘like’=>’test%’),
    * )
    */

    also, not that it matters, your array example has an extra trailing comma …
    * array(‘attribute’=>’lastname’, ‘like’=>’test%’), <- there