akeneo / magento2-connector-community

Akeneo Connector for Magento 2
Open Software License 3.0
88 stars 89 forks source link

Options are missing after import for mapped attributes #698

Open andriydeveloper opened 4 months ago

andriydeveloper commented 4 months ago

Environment and configuration

  1. Magento 2.4.6-p6
  2. PHP 8.2
  3. MariaDB 10.6.18
  4. akeneo/module-magento2-connector-community 104.3.2 (also tested with 104.3.9)
  5. Akeneo 7

Steps to reproduce

  1. Create any Akeneo attribute for example "Connector" (different CamelCase) with option variants
  2. Create any Magento attribute for example "connector" (different CamelCase) with option variants
  3. Try to import

Expected result

  1. All options should be imported from Akeneo to Magento

Actual result

There is a bug with MySQL query in the file: vendor/akeneo/module-magento2-connector-community/Job/Option.php method mapOptions

There are 2 lines 1 . $connection->delete($tmpTable, ['attribute = ?' => $magentoAttribute]);

  1. $options = $connection->select()->from($tmpTable)->where('attribute = ?', $akeneoAttribute); image

When $magentoAttribute and $akeneoAttribute parameters have the same value with different CamelCase the first line just deletes everything and you have no data for $options

The possible solution is making the query sensitive for CamelCase for example: $connection->delete($tmpTable, ['BINARY attribute = ?' => $magentoAttribute]); and after getting options delete it from the $tmpTable table in the database to prevent duplicates