Ich habe Code, um eine grundlegende Suche nach Kategorien durchzuführen. Es funktioniert durch Suchen des Kategorienamens und der Beschreibung - Attribute, die beide Kern sind.
Der Code, den ich habe, lautet wie folgt:
$_categories = Mage::getModel('catalog/category')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('description')
->addAttributeToSelect('associated_brand')
->addAttributeToSelect('image')
->setPageSize(12)
->setCurPage(1)
->addAttributeToFilter('level',['gt' => 2])
->addAttributeToFilter('is_active',['eq'=>true])
->addAttributeToFilter(
[
['attribute' => 'name', 'like' => '%'.$searchterm.'%'],
['attribute' => 'description', 'like' => '%'.$searchterm.'%']
]
)->load();
Vor dem Aktivieren des flachen Katalogs für Kategorien wurden die erwarteten Ergebnisse zurückgegeben - alle Kategorien, deren Name oder Beschreibung mit dem Suchbegriff übereinstimmt.
Wenn der flache Katalog aktiviert ist, funktioniert die Namens- oder Beschreibungssuche nicht. Wenn ich die zugrunde liegende Sammlungsabfrage ausgeben möchte, ist dies wie folgt:
SELECT `main_table`.`entity_id`, `main_table`.`level`, `main_table`.`path`, `main_table`.`position`, `main_table`.`is_active`, `main_table`.`is_anchor`, `main_table`.`name`, `main_table`.`description`, `main_table`.`associated_brand`, `main_table`.`image`
FROM `catalog_category_flat_store_1` AS `main_table`
WHERE (level > 2) AND (is_active = '1')
Wie aus dem Obigen ersichtlich ist, fehlen der Name und die Beschreibungsklausel vollständig.
Ich habe die generierte catalog_category_flat_store_1
Tabelle überprüft und die Felder sind dort vorhanden.
Irgendwelche Ideen, warum Magento diese Filter nur bei Verwendung des flachen Katalogs aus der Abfrage entfernt?
addFieldToFilter()
stattdessen direkt verwenden? Ich sehe keinen Grund, warum es nicht funktionieren sollte