Zoeken…


parameters

Parameter Details
$ addFieldToFilter ( $ veld , $ voorwaarde = null) {string} Het veld dat we aan het filter toevoegen.
$ addFieldToFilter ($ veld, $ voorwaarde = null ) {gemengd} De definitie van het filter dat we zullen gebruiken.
addAttributeToFilter ( $ attr , $ condition = null, $ join = 'inner') {string} Het veld dat we aan het filter toevoegen.
addAttributeToFilter ($ attr, $ condition = null , $ join = 'inner') {gemengd} De definitie van het filter dat we zullen gebruiken.
addAttributeToFilter ($ attr, $ condition = null, $ join = 'inner' ) {('inner', 'left')} Het type sql-join dat moet worden gebruikt bij deelname aan de EAV-tabel.

Opmerkingen

Vergelijkingsargumenten filteren

Magento biedt ook een flexibele manier van filteren met behulp van vergelijkingsoperatoren. Hier is een lijst met geldige operators en hun syntaxis:

Alle vergelijkingsargumenten kunnen worden doorgegeven aan de tweede parameter van de addFieldToFielter() of addAttributeToFilter() .

$collection_of_products->addAttributeToFilter('visible',array("eq"=>1));
Vergelijking Argument Array Resulterend SQL-fragment
Equals array ( "eq" => $ var) WHERE (`my_field` = $ var)
Niet gelijk array ( "NEH" => $ var) WHERE (`mijn_veld`! = $ Var)
Leuk vinden array ( "like" => $ var) WHERE (`my_field` LIKE $ var)
Niet zoals array ( "Nlike" => $ var) WAAR (`mijn_veld` NIET LIKE $ var)
is array ( "is" => $ var) WAAR (`mijn_veld` IS $ var)
In array ( "in" => $ var) WHERE (`mijn_veld` IN ($ var))
Niet in array ( "nin" => $ var) WHERE (`mijn_veld` NIET IN ($ var))
Nul array ( "null" => true) WAAR (`mijn_veld` IS NULL)
Niet nul array ( "notnull" => true) WAAR (`mijn_veld` IS NIET NULL)
Groter dan array ( "gt" => $ var) WAAR (`mijn_veld`> $ var)
Minder dan array ( "lt" => $ var) WHERE (`mijn_veld` <$ var)
Groter dan of gelijk aan array ( "gteq" => $ var) WHERE (`mijn_veld`> = $ var)
Minder dan of gelijk array ( "lteq" => $ var) WHERE (`mijn_veld` <= $ var)
Zoeken in Set array ( "Finset" => array ($ var)) WHERE (find_in_set ($ var, `my_field`)
Van en naar array ("from" => $ var1, "to" => $ var2) WHERE (`my_field`> = $ var1 EN` my_field` <= $ var2)

Collecties filteren

Magento heeft een krachtige set methoden om collecties te filteren. Aangezien er twee soorten objecten in verzamelingen kunnen worden opgenomen, moeten we eerst bepalen met welk type gegevens we werken voordat we deze kunnen filteren. Magento implementeert een EAV-datamodel voor entiteiten zoals producten en categorieën. Er is een andere set methoden om te gebruiken als we een verzameling EAV-objecten filteren.

In Magento worden bestellingen niet opgeslagen als EAV-objecten. Dit maakt de bestellingenverzameling een goed voorbeeld voor het filteren van een basisverzameling.

$collection_of_orders = Mage::getModel('sales/order')->getCollection();
$collection_of_orders->addFieldToFilter('status','processing');

Als we naar de productenverzameling kijken, zien we dat de producten zijn opgeslagen in een EAV-datamodel. We kunnen ook eenvoudig filteren op EAV-kenmerken.

$collection_of_products = Mage::getModel('catalog/product')->getCollection();
$collection_of_products->addAttributeToFilter('visible',1);

AND's en OR's verwerken in filters

Wanneer we onze gegevens opvragen, hebben we vaak meer dan één filter nodig om de exacte gegevensset te krijgen waarnaar we op zoek zijn. In SQL behandelen we dit met EN- en OF-clausules. We kunnen hetzelfde bereiken met collecties.

Om een EN-component aan uw zoekopdracht toe te voegen, voegt u gewoon een andere methodeaanroep toe. Dit voegt het tweede filter toe aan de originele WHERE-instructie en voegt deze samen met een AND.

Mage::getModel('catalog/product')->getCollection()
        ->addFieldToFilter('sku',array('like'=>'a%'))
        ->addFieldToFilter('sku',array('like'=>'%b'));

De resulterende WHERE-component ziet er als volgt uit:

WHERE (e.sku like 'a%') AND (e.sku like '%b')

Laten we nu zeggen dat we alle skus willen die beginnen met 'a' OF eindigen met 'b'. Hoe voegen we een OF-clausule toe? Dankzij de collecties van Magento is het vrij eenvoudig. We voegen het filter toe als een tweede element in de filterarray.

Mage::getModel('catalog/product')->getCollection()
        ->addFieldToFilter('sku', array(
            array('like'=>'a%'), 
            array('like'=>'%b')
        ));

Nu ziet de resulterende WHERE-component er als volgt uit:

WHERE (((e.sku like 'a%') or (e.sku like '%b'))) 


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow