カテゴリの基本的な検索を実行するためのコードがあります。カテゴリ名と説明を検索することで機能します-両方がコアである属性。
私が持っているコードは次のとおりです:
$_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();
カテゴリに対してフラットカタログを有効にする前に、期待される結果(名前または説明が検索語と一致するカテゴリ)が返されました。
フラットカタログを有効にすると、名前または説明の検索が機能しません。基になるコレクションクエリを出力すると、次のようになります。
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')
上記からわかるように、名前と説明の句は完全に欠落しています。
生成されたcatalog_category_flat_store_1
テーブルを確認しましたが、フィールドがそこにあります。
フラットカタログを使用している場合にのみ、Magentoがこれらのフィルターをクエリから削除する理由はありますか?