vuestorefront / magento2-vsbridge-indexer

This is official Vue Storefront, native, Magento2 indexer
https://vuestorefront.io
MIT License
69 stars 89 forks source link

category name in Product Incorrect #333

Closed nagrgkgc closed 4 years ago

nagrgkgc commented 4 years ago

Hi Team,

in file, module-vsbridge-indexer-catalog/Model/ResourceModel/Product/Category.php

private function loadCategoryName(array $loadCategoryIds, $storeId)

should be joining with row_id and not entity_id.

change from $categoryCollection->joinAttribute('name', 'catalog_category/name', 'entity_id');

to

$categoryCollection->joinAttribute('name', 'catalog_category/name', 'row_id');

nagrgkgc commented 4 years ago

PR is here for fix https://github.com/DivanteLtd/magento2-vsbridge-indexer/pull/334

nagrgkgc commented 4 years ago

Original query

SELECT e.*, IF(at_name.value_id > 0, at_name.value, at_name_default.value) AS name FROM catalog_category_entity AS e INNER JOIN catalog_category_entity_varchar AS at_name_default ON (at_name_default.row_id = e.entity_id) AND (at_name_default.attribute_id = '45') AND at_name_default.store_id = 0 LEFT JOIN catalog_category_entity_varchar AS at_name ON (at_name.row_id = e.entity_id) AND (at_name.attribute_id = '45') AND (at_name.store_id = 1) WHERE ((e.entity_id IN(3, 622, 1717, 595, 1809))) AND (e.created_in <= '1575980700') AND (e.updated_in > '1575980700')

should be

SELECT e.*, IF(at_name.value_id > 0, at_name.value, at_name_default.value) AS name FROM catalog_category_entity AS e INNER JOIN catalog_category_entity_varchar AS at_name_default ON (at_name_default.row_id = e.row_id) AND (at_name_default.attribute_id = '45') AND at_name_default.store_id = 0 LEFT JOIN catalog_category_entity_varchar AS at_name ON (at_name.row_id = e.row_id) AND (at_name.attribute_id = '45') AND (at_name.store_id = 1) WHERE ((e.entity_id IN(3, 622, 1717, 595, 1809))) AND (e.created_in <= '1575980700') AND (e.updated_in > '1575980700')