Когда строки в суперлинке продукта каталога не обновляются при удалении продукта?
Я обнаружил странное поведение в том, как Magento (EE 1.12) ведет хозяйство в таблице catalog_product_super_link
. Когда связанный простой продукт удаляется без предварительного разъединения, запись, соответствующая этой ссылке, остается. Кроме того, при повторном сохранении несвязанного настраиваемого продукта потерянные строки остаются.
Чтобы повторить это, пожалуйста, попробуйте
Создайте тестируемый настраиваемый продукт и простой продукт
Ассоциировать два.
Удалите простой продукт, не отсоединяясь.
-
Проверьте таблицу БД с помощью следующего запроса.
select l.*, p.sku from catalog_product_super_link as l left join catalog_product_entity as p on l.product_id = p.entity_id where l.parent_id = 1936;
И вы получите что-то вроде ниже, где записи NULL
являются прежними ассоциациями.
1769 1937 1936 НОЛЬ
1770 1938 1936 НОЛЬ
1771 1939 1936 НОЛЬ
1772 1940 1936 НОЛЬ
1773 1941 1936 сумка-001
1776 1950 1936 сумка-002
Это нормально?
1 answers
Вы уверены, что это стандартное поведение?
Я взглянул на структуру таблицы, и на ней есть 2 константы.
CREATE TABLE `catalog_product_super_link` (
`link_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Link ID',
`product_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Product ID',
`parent_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Parent ID',
PRIMARY KEY (`link_id`),
UNIQUE KEY `UNQ_CATALOG_PRODUCT_SUPER_LINK_PRODUCT_ID_PARENT_ID` (`product_id`,`parent_id`),
KEY `IDX_CATALOG_PRODUCT_SUPER_LINK_PARENT_ID` (`parent_id`),
KEY `IDX_CATALOG_PRODUCT_SUPER_LINK_PRODUCT_ID` (`product_id`),
CONSTRAINT `FK_CAT_PRD_SPR_LNK_PARENT_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`parent_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_CAT_PRD_SPR_LNK_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
Это означает, что если продукт удален (таким образом, строка удалена из catalog_product_entity
), любая строка в catalog_product_super_link
, у которой есть этот идентификатор продукта в столбцах parent_id
или entity_id
, будет удалена.
Проверьте, не потеряли ли вы ограничения при переносе базы данных.