Как работает функция setPostedProducts()?


Когда товар отнесен к категории, его отношение сохраняется в таблице catalog_category_product.

Но при поиске setPostedProducts() это кажется волшебным методом. Итак, как данные сохраняются в таблице catalog_category_product.

Author: Marius, 2015-06-12

2 answers

Как вы и подозревали, setPostedProducts - это волшебный метод.
Это просто делает $category->setData('posted_product', $products).
Набор значений позже извлекается с помощью getPostedProducts при сохранении категории.

Вот обратный путь.

  • Mage_Catalog_Model_Category::save(); вызовы Mage_Catalog_Model_Resource_Category::save
  • ...это вызывает Mage_Catalog_Model_Resource_Category::_afterSave
  • ...это вызывает Mage_Catalog_Model_Resource_Category::_saveCategoryProducts
  • , который вызывает getPostedProducts и что-то делает с результатами.

Смотрите метод _saveCategoryProducts, особенно часть, начинающуюся с $products = $category->getPostedProducts();

 5
Author: Marius, 2015-06-12 08:39:09

Я думаю, что важно добавить к ответу Мариуса, что $products - это массив, где ключ - идентификатор продукта (oh, PHP), а значение - позиция продукта в категории.

 0
Author: user487772, 2017-03-30 13:50:52