addAttributeToFilter ist eine Funktion, mit welcher man geschickte Abfragen an den Produktkatalog stellen kann. In Kurzform: Es beeinflusst den WHERE Anteil der SQL-Query:
$afterSalesSpecialOffer = Mage::getResourceModel('catalogsearch/advanced_collection') ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) ->addMinimalPrice() ->addTaxPercents() ->addStoreFilter() ->addAttributeToFilter('status', array('in'=>1)); $todayDate = date('m/d/y'); $tomorrow = mktime(0, 0, 0, date('m'), date('d')+1, date('y')); $tomorrowDate = date('m/d/y', $tomorrow); $afterSalesSpecialOffer->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate)) ->addAttributeToFilter('special_to_date', array('or'=> array( 0 => array('date' => true, 'from' => $tomorrowDate), 1 => array('is' => new Zend_Db_Expr('null'))) ), 'left');
Diese Abfrage hat zum Beispiel als Ergebnis alle Produkte, welche aktuell im Angebot sind. Dabei wird auch der Gültigkeitszeitraum des Angebots berücksichtigt.
Folgen Abfragebedingungen sind dabei möglich.
Gleich: eq
$_products->addAttributeToFilter('status', array('eq' => 1));
Nicht Gleich: neq
$_products->addAttributeToFilter('status', array('neq' => 1));
Ähnlich : like
$_products->addAttributeToFilter('sku', array('like' => '1%')); // Alle Produkte deren SKU mit 1 beginnen
Nicht Ähnlich: nlike
$_products->addAttributeToFilter('sku', array('nlike' => '1%')); // Alle Produkte deren SKU nicht mit 1 beginnen
Einer von: in
$_products->addAttributeToFilter('sku', array('in' => array(1,2,3))); // Produkte mit der SKU 1,2 oder 3
nicht Einer von: nin
$_products->addAttributeToFilter('sku', array('like' => array(1,2,3))); // Alle Produkte ausser mit der SKU 1,2 oder 3
ist nicht gesetzt NULL: null
$_products->addAttributeToFilter('sku', 'null'); // Alle Produkte ohne SKU; Darf eigentlich nicht vorkommen
ist gesetzt: notnull
$_products->addAttributeToFilter('sku', 'notnull'); // Alle Produkte mit SKU;
größer als: gt
$_products->addAttributeToFilter('entity_id', array('gt' => 100));
kleiner als: lt
$_products->addAttributeToFilter('entity_id', array('lt' => 100));
größer oder gleich als: gteg
$_products->addAttributeToFilter('entity_id', array('gteq' => 100));
kleiner oder gleich als: lteq
$_products->addAttributeToFilter('entity_id', array('lteq' => 100));
Neueste Kommentare