© DrHitch/Shutterstock.com
Shortcuts
Magento Entwicklung

3 Eigene Entitäten in Magento

Früher oder später sind Anpassungen vorhandener Magento-Module ausgereizt, etwas ganz Neues muss her. Spätestens jetzt ist ein gutes Verständnis von Magentos ORM Model angesagt. Sobald Daten geladen oder gespeichert werden, kommt der Entwickler mit den Datenbankstrukturen in Kontakt. Das Entity-Attribute-Value-(EAV-)Schema bietet viel Flexibilität auf Kosten von Performanz und Übersichtlichkeit; flache Tabellen sind schnell, erfordern aber unter Umständen mehr Arbeit. In diesem Abschnitt wird vermittelt, wie neue Entitäten angelegt und fundierte Entscheidungen bezüglich der verwendeten Datenbankstruktur getroffen werden können.

Shortcut Autorenteam


Dabei richtet sich dieser Teil an Entwickler, die bereits ein wenig Erfahrung mit der Modulprogrammierung für Magento haben. So wird beispielsweise vorausgesetzt, dass der Leser weiß, wie ein neues Modul angelegt wird. Darüber hinaus sollte der Leser Kenntnisse der Website-, Store-, StoreView-Konzepte, der Funktionsweise des Autoloaders und der Verwendung von Setup- und Upgrade-Skripten haben. Mittlerweile gibt es viele gute How-tos und Tutorials zu diesen Themen, deswegen konzentrieren wir uns auf das Eingemachte. Bevor ein Praxisbeispiel durchgesprochen wird, folgen zuerst einige Hintergründe. Wie Sie vielleicht wissen, werden in Magento alle Entitäten durch Model-Klassen repräsentiert. So sind z. B. Kunden, Produkte, Bestellungen und Newsletter verschiedene Entitäten, jeweils repräsentiert durch eine Model-Klasse. Jedes Model besitzt Methoden, die die Businesslogik implementieren, und Attribute, die den Zustand der Entität bestimmen. Um den Unterschied zu verdeutlichen: Die Methode hashPassword() des Kundenmodells dient zum Berechnen des Passwort-Hash. Die Werte Vorname, Nachname und E-Mail sind Attribute.Der Code zum Laden und Speichern der Attributwerte ist jedoch kein Teil der Model-Klasse. Dazu ist jedem Model ein so genanntes Resource Model zugewiesen. Diese Resource-Klasse enthält die benötigen Methoden für die Interaktion mit der Datenschicht. Damit die Datenschicht vollständig gekapselt ist, besitzt jede Entität außerdem ein Collection Model. Collections (Sammlungen) implementieren die Logik zum Verarbeiten mehrerer Entitäten. Sie dienen dazu, mehr als einen Datensatz zu laden und dabei bei Bedarf Filter anzuwenden.Die Datenschicht ist in der Regel eine (MySQL-)Datenbank, könnte aber theoretisch auch eine Datei oder ein Web Service sein. Magento verwendet derzeit nur MySQL als Datenschicht, das aber gleich in zwei Varianten mit verschiedenen Tabellenstrukturen. Wenn die Daten in flachen Tabellen gespeichert werden, vererben die Resource Models Mage_Core_Model_Mysql4_Abstract. Kommen EAV-Tabellen zum Einsatz, vererben die Resource Models die Klasse Mage_Eav_Model_Entity_Abstract. Was ist eigentlich EAV? Eine richtige Einführung in das Thema sprengt leider den Rahmen, es gibt aber u. a. eine Einführung in das EAV-Schema auf Wikipedia. Vereinfacht gesagt, wird bei Verwendung von EAV jedes Attribut zusammen mit Metaeigenschaften wie dem Datentyp und einem Attributcode in einer eigenen Tabelle gespeichert. Die Entitäten und die jeweiligen We...

Shortcuts
Magento Entwicklung

3 Eigene Entitäten in Magento

Früher oder später sind Anpassungen vorhandener Magento-Module ausgereizt, etwas ganz Neues muss her. Spätestens jetzt ist ein gutes Verständnis von Magentos ORM Model angesagt. Sobald Daten geladen oder gespeichert werden, kommt der Entwickler mit den Datenbankstrukturen in Kontakt. Das Entity-Attribute-Value-(EAV-)Schema bietet viel Flexibilität auf Kosten von Performanz und Übersichtlichkeit; flache Tabellen sind schnell, erfordern aber unter Umständen mehr Arbeit. In diesem Abschnitt wird vermittelt, wie neue Entitäten angelegt und fundierte Entscheidungen bezüglich der verwendeten Datenbankstruktur getroffen werden können.

Shortcut Autorenteam


Dabei richtet sich dieser Teil an Entwickler, die bereits ein wenig Erfahrung mit der Modulprogrammierung für Magento haben. So wird beispielsweise vorausgesetzt, dass der Leser weiß, wie ein neues Modul angelegt wird. Darüber hinaus sollte der Leser Kenntnisse der Website-, Store-, StoreView-Konzepte, der Funktionsweise des Autoloaders und der Verwendung von Setup- und Upgrade-Skripten haben. Mittlerweile gibt es viele gute How-tos und Tutorials zu diesen Themen, deswegen konzentrieren wir uns auf das Eingemachte. Bevor ein Praxisbeispiel durchgesprochen wird, folgen zuerst einige Hintergründe. Wie Sie vielleicht wissen, werden in Magento alle Entitäten durch Model-Klassen repräsentiert. So sind z. B. Kunden, Produkte, Bestellungen und Newsletter verschiedene Entitäten, jeweils repräsentiert durch eine Model-Klasse. Jedes Model besitzt Methoden, die die Businesslogik implementieren, und Attribute, die den Zustand der Entität bestimmen. Um den Unterschied zu verdeutlichen: Die Methode hashPassword() des Kundenmodells dient zum Berechnen des Passwort-Hash. Die Werte Vorname, Nachname und E-Mail sind Attribute.Der Code zum Laden und Speichern der Attributwerte ist jedoch kein Teil der Model-Klasse. Dazu ist jedem Model ein so genanntes Resource Model zugewiesen. Diese Resource-Klasse enthält die benötigen Methoden für die Interaktion mit der Datenschicht. Damit die Datenschicht vollständig gekapselt ist, besitzt jede Entität außerdem ein Collection Model. Collections (Sammlungen) implementieren die Logik zum Verarbeiten mehrerer Entitäten. Sie dienen dazu, mehr als einen Datensatz zu laden und dabei bei Bedarf Filter anzuwenden.Die Datenschicht ist in der Regel eine (MySQL-)Datenbank, könnte aber theoretisch auch eine Datei oder ein Web Service sein. Magento verwendet derzeit nur MySQL als Datenschicht, das aber gleich in zwei Varianten mit verschiedenen Tabellenstrukturen. Wenn die Daten in flachen Tabellen gespeichert werden, vererben die Resource Models Mage_Core_Model_Mysql4_Abstract. Kommen EAV-Tabellen zum Einsatz, vererben die Resource Models die Klasse Mage_Eav_Model_Entity_Abstract. Was ist eigentlich EAV? Eine richtige Einführung in das Thema sprengt leider den Rahmen, es gibt aber u. a. eine Einführung in das EAV-Schema auf Wikipedia. Vereinfacht gesagt, wird bei Verwendung von EAV jedes Attribut zusammen mit Metaeigenschaften wie dem Datentyp und einem Attributcode in einer eigenen Tabelle gespeichert. Die Entitäten und die jeweiligen We...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang