2012-10-25 4 views

Antwort

38

Ressourcenmodelle Objekte geschrieben sind, die enthalten Code, der Daten aus einem Datenspeicher abruft. In der Praxis bedeutet dies, dass ein Ressourcenmodell das Objekt ist, das den SQL-Aufbau- und Abrufcode sowie Verweise auf Objekte enthält, die mit der Magento-Hauptdatenbank verbunden sind.

Modelle sind Objekte, die datenbankunabhängigen Code für die Interaktion mit einem "Typ" von Daten enthalten. In herkömmlichen Datenmodellierungsbegriffen enthalten Ihre Modellobjekte die Geschäftslogik für eine bestimmte Art von Objekt (Objektart, Produkt, Kunde usw.).

Wichtig: Zusätzlich zur obigen Definition verwenden Teile des Magento-Codes "Models" als generisches Objekt, das Geschäftslogik ohne Bezug zu Daten enthält. Diese "Modelle" sollten als einfache alte Objekte betrachtet werden, die nur durch das Magento-Fabrikmuster instanziiert werden. Modelle, die von Mage_Core_Model_Abstract erben, sind die früheren - Modelle, die nicht die späteren sind. In diesem Beitrag wird davon ausgegangen, dass sich "Modell" auf Ersteres bezieht. Ich habe auch angefangen, diese als Magento's CRUD models zu bezeichnen.

Eine Sammlung ist ein Objekt, das Code enthält, der eine Gruppe (Sammlung, Array, Liste usw.) von Modellobjekten abruft. Da SQL dafür generiert wird, wird es auch als Ressourcenmodell betrachtet und mit der Mage::getResourceModel-Methode instanziiert (obwohl Auflistungsobjekte von einer anderen Kette von Klassen als die normalen Ressourcenmodelle erben. Dies sind nicht die Entwurfsmuster, nach denen Sie suchen). . Auflistungsobjekte implementieren auch bestimmte Standard-PHP-Schnittstellen und können in foreach-Schleifen verwendet werden, um über ihre Ergebnisse zu iterieren.

Ein Magento-Modellobjekt enthält einen Verweis auf ein Ressourcenmodell, das zum Laden seiner Daten verwendet wird. Für jedes Modellobjekt gibt es ein individuelles Ressourcenmodellobjekt. ein Produktmodell hat ein Produktressourcenmodell.

Ein Magento-Modellobjekt kann auch zum Instanziieren eines Sammlungsobjekts verwendet werden. Sammlungsobjekte werden auch so typisiert, dass sie ihren Modellobjekten entsprechen. Ein Produktmodell kann zum Instanziieren eines Produktsammlungsobjekts verwendet werden.

Ein Auflistungsobjekt erstellt SQL, um eine Gruppe (Auflistung, Array, Liste usw.) von Objekten abzurufen, und es enthält auch Code, um dem Hauptmodellobjekt Daten zuzuweisen. Da sich dieser Code geringfügig von dem Code im Ressourcenmodellobjekt eines Modells unterscheidet, gibt es oft geringfügige Abweichungen zwischen Modellen, die direkt oder über eine Sammlung geladen werden. Eine Sammlung ruft beispielsweise nicht die Methode _afterLoad eines Modells auf, oder eine EAV-Sammlung lädt standardmäßig nicht alle Attributdaten (es sei denn, addAttributeToCollection('*') wird verwendet). Eine Menge von Magento Entwicklung ist auf der Spur und berücksichtigen diese Diskrepanzen.

Schließlich gibt es Stellen im Magento-Quellcode, die von den obigen abweichen. Beispiel: Berichtssammlungsobjekte sind freistehend - sie sind nicht an eine bestimmte Modellklasse gebunden. Behalten Sie dies im Hinterkopf, aber seien Sie bereit für bestimmte Magento-Module, die Sie überraschen.

+8

Ihr Beitrag zur Magento-Community ist unbezahlbar. Vielen Dank. –

+0

@Alan Strom.Vielen vielen Dank :) – ROBIN

+1

@alan Wenn es Ihnen nichts ausmacht, können Sie bitte s/w Ressourcenmodell und Ressourcensammlungen unterscheiden. Ist das korrekt, wenn wir sagen, dass das Ressourcenmodell eine einzelne ROW (wie Create, update, delete und select action in einer ROW) oder die Arbeit an einer ROWS-Gruppe an einem einzelnen ROW bearbeitet oder bearbeitet? Bitte verzeihen Sie mir, es kann eine dumme Frage sein, ich bin lil Angst, während Sie das fragen :) – ROBIN

3

zu viel zu geben :) Alan Sturm großen Artikel über magento model basics

+0

Ein sehr guter Artikel von Alan –

Verwandte Themen