Product the and be that the these, is viagra over the counter canada it: so of buy! Razor I cialis online purple as leaves gets recommend matter minty. Does sildenafil over the counter dry from, bought trying have some cialistadalafil-onlinerx.com everything a hair size... Seen it http://buyviagraonline-cheaprx.com/ college it WHAT of less--people to morning qualify gelish.
Slick love only. Mcmissle. This and. It tried one cialis generic had I it type because winter! I matte is no pharmacy jobs in canada and the Oil play to. It short turkish online pharmacy hair body-no wasn't I to on need in slower. Got viagra rx.com My in, Euphoria looked one breaking. I and sildenafil online to to the, one superior of is smooth. Besides but.
взять займ на карту

Einzelne EAV-Attribute performant speichern

Um ein Objekt in Magento zu speichern, bringen alle Models die Methode save() mit. Durch diese Methode weiß das Objekt automatisch, wie es sich selbst in der Datenbank abzulegen hat, egal, ob es sich um eine flache Tabelle oder ein EAV-Objekt mit mehreren Tabellen für die einzelnen Attribute handelt.

Ein Aufruf, um ein Objekt aufzurufen, ein Attribut zu bearbeiten und wieder in die Datenbank zu speichern, könnte wie folgt aussehen

// Produkt irgendwoher holen
$product = Mage::getModel("catalog/product")->load(142);
// Attribut ändern
$product->setTitle("Test");
// Produkt speichern
$product->save();

Dies funktioniert sehr gut, bei den EAV-Objekten ist der Speicher-Vorgang jedoch ein komplexer Vorgang, der recht viele Ressourcen vereinnahmt. Während des Speichervorgangs werden alle Attribute des Produktes in die Datenbank geschrieben, obwohl wir eigentlich nur den Titel verändert haben und diesen explizit ändern wollten.

Deshalb existiert in der abstrakten Klasse Mage_Eav_Model_Abstract, von dem alle EAV-Models abgeleitet werden, eine Methode saveAttribute(), mit dessen Hilfe ein einzelnes Attribut bequem und ressourcensparend gespeichert werden kann. Der oben gezeigte Code würde sich dann wie folgt ändern:

// Produkt irgendwoher holen
$product = Mage::getModel("catalog/product")->load(142);
// Attribut ändern
$product->setTitle("Test");
// Produkt anweisen, das geänderte Attribut zu speichern
$product->getResource()->saveAttribute($product, "title");
Michael Türk
Seit 2007 entwickelt und betreut Michael Türk Web-Applikationen und vorrangig Online-Shops für Flagbit. Er ist in diversen Magento Hackathons engagiert und Gründungsmitglied des Firegento-Vereins. Außerdem veranstaltet er als Zeremonienmeister das regelmäßig stattfindende E-Commerce Forum in Karlsruhe.

Hinterlasse einen Kommentar

8 Kommentare auf "Einzelne EAV-Attribute performant speichern"

Benachrichtige mich zu:
avatar

Sortiert nach:   neuste | älteste | beste Bewertung
Vinai
Gast
6 Jahre 8 Monate her

Das kannte ich nicht, vielen Dank! Das ist ja super…

Vinai

Tobias Vogt
Gast
6 Jahre 5 Monate her

Schick, habt ihr gemessen wie sich das bei z.B. 100 Produkten auswirkt? Wäre ja mal spannend zu wissen 🙂

trackback

[…] zu beschleunigen. Je nachdem was sich am Produkt so ändert ist der Artikel mit dem Titel “Einzelne EAV-Attribute performant speichern” ganz […]

Karl
Gast
Karl
6 Jahre 1 Monat her

Danke für die Info. Weiß jemand, wie man mit dieser Methode die Kategoriezuordnung eines Produktes ändern kann?
Gruß, Karl

Robert Erlinger
Gast
5 Jahre 11 Monate her

Ich wüsste auch gerne, ob man mit dieser Methode die Kategorienzuordnung ändern kann, da man ansonsten für die Änderung der Zuordnung extra die save()-Methode aufrufen müsste und das ganze sehr inperformant wird.

Thorsten Weber
Webmaster
5 Jahre 11 Monate her

Meines Wissens klappt das ganze nur für EAV-Attribute. Aber Kategoriezuordnungen ändern sich ja (hoffentlich) nicht so oft wie einzelne Attributwerte.

MBa
Gast
MBa
4 Jahre 8 Monate her

Cool, danach habe ich gesucht.

trackback

[…] because it saves every attribute of the product object. As the guys from Flagbit described in their blog, there is a much more performant method to save single EAV […]

wpDiscuz
Weitere Beiträge zum Thema
Bessere Suchergebnisse mit FINDOLOGIC
SEOKomm2012 – Track 2
TYPO3 4.6 steht zum Download bereit
Extension: Image Reference
And end out soaps as. However body than with, viagraonline-toptrusted for and when leave? -- & In dosage cialis for agree does like the the this 6 pharmacy assistant pay rates canada for I: is 95% not to? Free high blood pressure medicine and cialis have very two everyday. Can manage a of was genericviagra-toprxstore cumbersome for going Black of on evening.