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. p>
5 Réponses :
Vous n'avez pas besoin d'utiliser maintenant la solution: strong> addFieldtofilter code>.
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
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.
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');
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.
Je vois que vous avez déjà trouvé une solution, mais il y a aussi cette option: 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' ));
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.
Ceci fonctionne pour NON FILTRES NULLLLES
$collection->addFieldToFilter('parent_item_id', array('notnull' => true));
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: p>