Подтвердить что ты не робот

Почему связь между настраиваемым продуктом и простым продуктом хранится дважды?

Глубокое погружение в внутренности Magento здесь, не ища решения конкретной проблемы, просто пытаясь понять некоторые детали реализации.

Когда вы создаете настраиваемый продукт в Magento, а затем создаете дочерние простые продукты для реализации таких вещей, как размер рубашки, цвет и т.д., Magento сохраняет это соотношение в двух отдельных таблицах.

catalog_product_relation
catalog_product_superlink_table

Почему эти отношения хранятся дважды?

Является ли это устаревшим кодом или существует семантическое различие между ссылкой отношения продукта и ссылкой "суперлинк" продукта?

Означает ли система, что они будут одинаковыми, или это действительное состояние объекта, чтобы эти таблицы отображали разные отношения родителя/ребенка?

4b9b3361

Ответ 1

Почему - отличный вопрос. Таблица catalog_product_super_link содержит только данные, относящиеся к настраиваемым продуктам. catalog_product_relation также содержит информацию о соотношении для объединенных и сгруппированных продуктов в дополнение к настраиваемым отношениям.

Вся бизнес-логика, вращающаяся вокруг настраиваемых продуктов, относится к таблицам catalog_product_super_*, например. поиск настраиваемых атрибутов и обновлений цен для настраиваемого продукта.

В отличие от таблицы catalog_product_relation используются классы, не относящиеся к настраиваемым продуктам, такие как классы индексатора каталога абстрактных каталогов.

Кажется, что основная команда Magento хотела отделить логически отличную функциональность не только от отдельных классов PHP, но и от отдельных таблиц базы данных. Возможные преимущества? Теоретически я думаю, что проще изменить конфигурационную реализацию продукта, не нарушая реализацию индексатора.

Это просто догадка - я не подтвердил это или не говорил с кем-то, кто "знает" (ментальная нота для воображения)