Comment puis-je réinitialiser addAttributeToFilter dans Magento recherches
Je vais avoir des problèmes pour obtenir le addAttributeToFilter fonction dans une boucle à se comporter dans Magento. J'ai des données de test dans mon magasin, à l'appui de recherches pour l'ensemble des données suivantes;
$attributeSelections=array( array('size' => 44, 'color' => 67, 'manufacturer' => 17),
array('size' => 43, 'color' => 69, 'manufacturer' => 17),
array('size' => 42, 'color' => 70, 'manufacturer' => 17));
Et mon code à la recherche par le biais de ces combinaisons;
foreach ($attributeSelections as $selection) {
$searcher = Mage::getSingleton('catalogsearch/advanced')->getProductCollection();
foreach ($selection as $k => $v) {
$searcher->addAttributeToFilter("$k", array('eq' => "$v"));
echo "$k: $v<br />";
}
$result=$searcher->getData();
print_r($result);
}
Cette boucle donne les résultats suivants (un peu juste pour veiwing plaisir);
size: 44
color: 67
manufacturer: 17
Array ( [0] => Array ( [entity_id] => 2965 [entity_type_id] => 4 [attribute_set_id] => 28 [type_id] => simple [sku] => 1006-0001 [size] => 44 [color] => 67 [manufacturer] => 17 ) )
size: 43
color: 69
manufacturer: 17
Array ( [0] => Array ( [entity_id] => 2965 [entity_type_id] => 4 [attribute_set_id] => 28 [type_id] => simple [sku] => 1006-0001 [size] => 44 [color] => 67 [manufacturer] => 17 ) )
size: 42
color: 70
manufacturer: 17
Array ( [0] => Array ( [entity_id] => 2965 [entity_type_id] => 4 [attribute_set_id] => 28 [type_id] => simple [sku] => 1006-0001 [size] => 44 [color] => 67 [manufacturer] => 17 ) )
Donc ma boucle est la fonction et la génération de la recherche. Toutefois, les valeurs de la fed en addAttributeToFilter sur la première itteration de la boucle semblent rester stockées pour chaque recherche.
J'ai essayé de compensation de mon objet de recherche, par exemple, la fonction unset($recherche) et unset($result). J'ai aussi essayé de magento fonctions telles que getNewEmptyItem(), resetData(), distinct() et clear() mais aucun n'a l'effet désiré.
Fondamentalement, ce que je suis en train de faire est de vérifier les produits dupliqués avant mon script tente d'en programmant la création d'un produit avec ces attribut combinaisons. Le tableau de choix d'attributs peuvent être de tailles variées, d'où la nécessité d'une boucle.
Je serais très appreiciative si quelqu'un pourrait être en mesure de jeter un peu de lumière sur mon problème.
OriginalL'auteur Bobby | 2010-04-23
Vous devez vous connecter pour publier un commentaire.
Le point de l'ensemble du singleton est d'obtenir le même objet, à chaque fois, donc la suppression de $chercheur ne fonctionne pas. Vous pouvez utiliser
pour supprimer chaque attribut de filtre.
OriginalL'auteur matei
@matei la removeAttributeToSelect ne fonctionne pas malheureusement. J'ai découvert aujourd'hui que la bonne façon de réinitialiser une collection est:
Qui permet de supprimer le chargé
_items
, et de supprimer toutewhere
clauses de la collection select. Vous pouvez ensuite ajouter vos critères frais etload
la collection.OriginalL'auteur Jonathan Day
Comme matei a souligné déjà ici, le problème réside avec getSingleton de la récupération de l'objet même. J'ai remplacé cette déclaration en ligne avec;
Il travaille maintenant comme souhaité.
OriginalL'auteur Bobby