Ich muss die Produktdaten massiv aktualisieren, aber was ich tun muss, kann mit dem Produktimport nicht erreicht werden. Zum Beispiel muss ich die Mediengalerie und Kategorien für bestimmte Produkte aktualisieren, aber die Lösung, die ich herausgebracht habe, dauert zu lange.
Ein kleiner Rückblick: Ich habe der Magento 2-CLI einen Befehl hinzugefügt, der anhand einer JSON-Konfigurationsdatei Mediengalerieeinträge für ein bestimmtes Produkt wie dieses entfernt, hinzufügt, aktualisiert oder sortiert. Hier füge ich einen Auszug aus dem Code ein:
/* $product is of type Magento\Catalog\Model\Product */
//get existing media gallery
$existingMediaGallery = $product->getMediaGallery();
/*
do stuff with media gallery (alter $existingMediaGallery)
(add, remove, sort, ...)
*/
//set media gallery again
$product->setMediaGallery($existingMediaGallery);
//process media gallery
$mediaGalleryEntries = $product->getMediaGalleryEntries();
$this->getMediaGalleryProcessor()->clearMediaAttribute($product, array_keys($product->getMediaAttributes()));
if ($mediaGalleryEntries) {
foreach ($mediaGalleryEntries as $k => $entry) {
if (!isset($entry['removed']) && !empty($entry['types'])) {
$this->getMediaGalleryProcessor()->setMediaAttribute($product, $entry['types'], $entry['file']);
}
}
}
//save product
$product->save();
Da es sich um ein umfangreiches Update handelt, wird die Zeile "$ product-> save ()" mehrmals aufgerufen und dauert immer 2 bis 4 Sekunden. Da ich den Code für Tausende von Produkten starten muss, brauche ich einen schnelleren Weg, dies zu tun.
Ich habe es mit versucht
$product->getResource()->saveAttribute($product, 'media_gallery');
und
$product->addAttributeUpdate('media_gallery', $mediaGallery, $storeId);
Aber das funktioniert nicht für Mediengalerien (funktioniert nur für EA, denke ich).
Gibt es eine Möglichkeit, nur die Mediengalerie zu speichern und diese Änderungen schneller beizubehalten?
(Was ich suche, ist so etwas wie eine Magento\Catalog\Api\CategoryLinkManagementInterface::assignProductToCategories
Methode, die die Kategorie- / Produktzuordnung schneller speichert als eine vollständige Produktspeicherung)