2012-10-25 6 views

Odpowiedz

38

zasobów modele są obiektami, które zawierają kod, który pobiera dane z magazynu danych. W praktyce oznacza to, że model zasobów jest obiektem zawierającym kod budowania i pobierania kodu SQL, a także odwołania do obiektów, które łączą się z główną bazą danych Magento.

Modele to obiekty, które zawierają kod agnostyczny bazy danych do interakcji z "typem" danych. W tradycyjnych terminach modelowania danych obiekty twojego modelu zawierają logikę biznesową dla określonego rodzaju obiektu (rodzaj przedmiotu oznaczającego Produkt, Klient itp.).

Ważne: W uzupełnieniu do powyższej definicji, części kodu Magento użytku „Models” jako obiektu ogólnego, które zawierają logikę biznesową niepowiązanych danych. Te "modele" powinny być uważane za zwykłe stare obiekty, tylko tworzone przez wzorzec fabryki Magento. Modele odziedziczone po Mage_Core_Model_Abstract są modelami, które nie są późniejszymi modelami. Ten post zakłada, że ​​"model" odnosi się do pierwszego. Też zacząłem odnosić się do nich jako Magento's CRUD models.

Kolekcja to obiekt zawierający kod pobierający grupę (kolekcję, tablicę, listę itp.) Obiektów modelu. Ponieważ generuje SQL, aby to zrobić, jest również uważany za model zasobów i jest tworzony za pomocą metody Mage::getResourceModel (Chociaż obiekty kolekcji dziedziczą z innego łańcucha klas niż normalne modele zasobów, to nie są wzorce, których szukasz). . Obiekty kolekcji również implementują pewne standardowe interfejsy PHP i mogą być używane w pętlach foreach do iterowania ich wyników.

Obiekt modelu Magento zawiera odniesienie do modelu zasobów, który służy do ładowania jego danych. Dla każdego obiektu modelu istnieje indywidualny obiekt modelu zasobu. tzn. Model produktu ma model zasobów produktu.

Obiekt modelu Magento może być również użyty do utworzenia instancji obiektu kolekcji. Obiekty kolekcji są również wpisywane w celu dopasowania do ich obiektów modelu. Do utworzenia wystąpienia obiektu kolekcji produktu można użyć modelu produktu.

Obiekt kolekcji tworzy SQL w celu pobrania grupy (kolekcja, tablica, lista itd.) Obiektów, a także zawiera kod do przypisania danych do głównego obiektu modelu. Ponieważ ten kod jest nieco inny niż kod w modelu modelu zasobu modelu, często występują niewielkie rozbieżności między modelami ładowanymi bezpośrednio lub przez kolekcję. Na przykład kolekcja nie wywołuje metody dla każdego modelu _afterLoad, a kolekcja EAV domyślnie nie ładuje wszystkich danych atrybutów (chyba że użyto addAttributeToCollection('*')). Wiele rozwoju Magento śledzi i uwzględnia te rozbieżności.

Wreszcie, istnieją miejsca w kodzie źródłowym Magento, które odbiegają od powyższego. Na przykład: obiekt kolekcji raportów jest niezależny - nie są to powiązania z określoną klasą modelu. Pamiętaj o powyższym, ale bądź gotowy na konkretne moduły Magento, aby Cię zaskoczyć.

+8

Twój wkład w społeczność Magento jest bezcenny. Dzięki. –

+0

@Alan Strom.Many Many Thanks :) – ROBIN

+1

@alan Jeśli nie masz nic przeciwko, możesz wyróżnić B/w Model zasobów i Kolekcje zasobów. Czy to jest poprawne, jeśli powiemy, że Model zasobu działa lub działa na pojedynczym WIERSZU (jak tworzenie, aktualizowanie, usuwanie i wybieranie akcji na WIERSZU) i gromadzenie zasobów w grupie WIERSZY? Proszę wybacz mi, może to być głupie pytanie, jestem przerażony lala, pytając o to :) – ROBIN

3

zbyt wiele do pisania :) Alan Burza napisał wielki artykuł o magento model basics

+0

Bardzo dobry artykuł Alana –

Powiązane problemy