Per parametrizzare la query o la collection in fase di estrazione dati, ossia aggiungere null - diverso da - >= etc.., è sufficiente utilizzare addFieldToFilter e addAttributeToFilter.
Esempio:
$collection= Mage::getModel('mdg_giftregistry/entity')
->getCollection()
->addFieldToFilter('customer_id', $customer->getId());
In questo caso si richiede di effettuare un filtro con il campo customer_id ugale all'id del customer.
Mage::getModel('mdg_giftregistry/entity')->getCollection() restituisce un oggetto Varien_Data_Collection_DB dove il metodo addFieldToFIlter è così definito:
/**
* Add field filter to collection
*
* @see self::_getConditionSql for $condition
*
* @param string|array $field
* @param null|string|array $condition
*
* @return Mage_Eav_Model_Entity_Collection_Abstract
*/
public function addFieldToFilter($field, $condition = null)
Il parametro $condition accetta un array con i relativi test da effettuare il campo $field. Le condizioni specificabili sono contenute nel metodo protected function _getConditionSql($fieldName, $condition) e sono:
* Build SQL statement for condition
*
* If $condition integer or string - exact value will be filtered ('eq' condition)
*
* If $condition is array - one of the following structures is expected:
* - array("from" => $fromValue, "to" => $toValue)
* - array("eq" => $equalValue)
* - array("neq" => $notEqualValue)
* - array("like" => $likeValue)
* - array("in" => array($inValues))
* - array("nin" => array($notInValues))
* - array("notnull" => $valueIsNotNull)
* - array("null" => $valueIsNull)
* - array("moreq" => $moreOrEqualValue)
* - array("gt" => $greaterValue)
* - array("lt" => $lessValue)
* - array("gteq" => $greaterOrEqualValue)
* - array("lteq" => $lessOrEqualValue)
* - array("finset" => $valueInSet)
* - array("regexp" => $regularExpression)
* - array("seq" => $stringValue)
* - array("sneq" => $stringValue)
Ora vediamo come utilizzare praticamente i filtri:
// Is Equal To (eq)
$collection->addFieldToFIlter('status', array('eq' => 1));
// Is Not Equal To (neq)
$collection->addFieldToFIlter('sku', array('neq' => 'test-product'));
// Greater Than (gt)
$collection->addFieldToFIlter('price', array('gt' => 10.05));
// Less Than (lt)
$collection->addFieldToFIlter('price', array('lt' => 15.09));
// Greater Than or Equal To (gteq)
$collection->addFieldToFIlter('price', array('gteq' => 2.29));
// Less Than or Equal To (lteq)
$collection->addFieldToFIlter('price', array('lteq' => 5.44));
// Contains (like) - also uses % wildcards
$collection->addFieldToFIlter('sku', array('like' => 'test-product%'));
// Does Not Contain (nlike) - also uses % wildcards
$collection->addFieldToFIlter('sku', array('nlike' => 'test-product%'));
// In Array (in)
$collection->addFieldToFIlter('id', array('in' => array(1,3,12)));
// Not In Array (nin)
$collection->addAttributeToFilter('id', array('nin' => array(1,2,12)));
// Is NULL (null)
$collection->addFieldToFIlter('description', 'null');
// Is Not NULL (notnull)
$collection->addFieldToFIlter('description', 'notnull');
*** getSelect()
e join()
restituiscono un oggetto select, mentre addStoreFilter()
e addIsActiveFilter()
restituiscono la collezione.
Commenti
Posta un commento