Tôi có một số mã để thực hiện tìm kiếm cơ bản của danh mục. Nó hoạt động bằng cách tìm kiếm tên danh mục và mô tả - các thuộc tính đều là cốt lõi.
Mã tôi có như sau:
$_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();
Trước khi bật danh mục phẳng cho các danh mục, nó đã trả về kết quả mong đợi - bất kỳ danh mục nào phù hợp với cụm từ tìm kiếm trong tên hoặc mô tả của chúng.
Với danh mục phẳng được bật, tìm kiếm tên hoặc mô tả không hoạt động. Nếu tôi xuất truy vấn bộ sưu tập cơ bản, nó như sau:
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')
Như có thể thấy ở trên, mệnh đề tên và mô tả bị thiếu hoàn toàn.
Tôi đã kiểm tra catalog_category_flat_store_1
bảng đã tạo và các trường có mặt ở đó.
Bất kỳ ý tưởng tại sao Magento bỏ các bộ lọc này khỏi truy vấn, chỉ khi sử dụng danh mục phẳng?