11
votes

Magento Addfieldofilter Autoriser les nulls

Lorsque vous utilisez la méthode de la collection Magento, AddFieldTofilter est-il possible d'autoriser le filtrage par des valeurs NULL? Je souhaite sélectionner tous les produits dans une collection qui possède un attribut personnalisé, même si aucune valeur n'est attribuée à l'attribut.


0 commentaires

5 Réponses :


2
votes

Vous n'avez pas besoin d'utiliser addFieldtofilter code>.

maintenant la solution: strong>

Nom des attributs est appelé code code> dans Magento, il vous suffit d'utiliser le code ci-dessous pour obtenir tous les produits qui ont un attribut spécifique en tant que tableau P>

app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php


2 commentaires

Merci d'avoir souligné Addfieldtofilter - il a conduit à la solution de manutention des champs nulles


Ceci est en fait faux, cela fera une comparaison avec Vide '' plutôt qu'un "NULL" filtrage.



19
votes

Filtrer une collection de produits par NULL / Attributs vides a deux solutions possibles. Magento utilise une jointure interne pour saisir les valeurs des attributs à filtrer. Mais si l'attribut du produit n'est pas attribué une valeur, la jointure échouera, comme une table de base de données / relation est manquante.

Solution n ° 1: strong> Utilisez addattribuettofilter () et modifiez le type de jointure de "interne "(la valeur par défaut) à" GAUCHE ": P>

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('custom_attribute', array( ... condition options ..), 'left');


2 commentaires

La stratégie de jointure gauche a fonctionné super. On dirait que cette réponse est assez ancienne, mais je dois dire merci quand même!


La join gauche est un must lors de l'attribut saisissant, imo.



56
votes

Je vois que vous avez déjà trouvé une solution, mais il y a aussi cette option: xxx pré>

mais si vous souhaitez utiliser "null" => false, ce qui ne fonctionne pas. (Et j'ai remarqué que vous pouvez utiliser des éléments tels que "IN", "NIN", "EQ", "NEQ", "GT"), vous pouvez le faire: P>

$collection->addFieldToFilter('parent_item_id', array('neq' => 'NULL' ));


1 commentaires

Voir la documentation dans le code de varien_data_collection_db :: _ getconitionSQL (). Il décrit toutes les options possibles, comme le «null» mentionné, mais aussi 'notnull' pour l'inverse.



25
votes

Ceci fonctionne pour NON FILTRES NULLLLES

$collection->addFieldToFilter('parent_item_id', array('notnull' => true));


0 commentaires

7
votes

Parce que la question ne correspond pas exactement au titre de la question et je les ai trouvées à plusieurs reprises en recherchant une condition comme: valeur spéciale ou null

Si vous souhaitez filtrer une collection correspondant à une valeur ou à NULL, puis Vous pouvez utiliser: xxx


0 commentaires