Nie można załadować obiektu wyceny

24

Czy sales/quoteobiekt podczas ładowania działa inaczej niż inne obiekty? Zobacz następujące ...

Prace:

$quote = Mage::getModel('sales/quote')->getCollection()
    ->addFieldToFilter('entity_id', $quoteId)
    ->getFirstItem();
print_r($quote->getData()); // shows right data

Nie działa:

$quote = Mage::getModel('sales/quote')->load($quoteId);
print_r($quote->getData()); // empty

Obie $quotesą poprawne z klasy Mage_Sales_Model_Quote.

musicliftsme
źródło
z 5 pozytywnymi opiniami nie rozumiem, w jaki sposób to pytanie jest oznaczone jako nie na temat i nie do odtworzenia. ten problem można odtworzyć. Po prostu załaduj wycenę na stronie widoku zamówienia frontonu, a na stronie widoku zamówienia administratora będzie działać inaczej. Odpowiedź webbiedave działa idealnie w tym scenariuszu.
Reena Parekh,

Odpowiedzi:

29

Najpierw ustaw sklep:

$store = Mage::getSingleton('core/store')->load(1);

$quote = Mage::getModel('sales/quote')->setStore($store)->load($quoteId);
webbiedave
źródło
2

Nie, Mage_Sales_Model_Quotejest jak wszystkie inne modele oparte na db. Robisz coś złego. Może na stałe $quoteId? Jesteś pewien, że to prawda? Oba kody powinny działać.

Fabian Blechschmidt
źródło
Tak, próbowałem użyć liczby całkowitej zamiast $quoteId. Zaczynam myśleć, że może $quoteIdto być sznurek lub coś takiego. Mój skrypt jest obecnie uruchomiony, więc sprawdzę jutro.
musicliftsme
Hmm, to też nie działa na innym wystąpieniu, gdy identyfikator jednostki cytatu jest sztywno zapisany w postaci ciągu lub liczby całkowitej. Fabian, próbowałeś już fragmentu kodu, który opublikowałem?
musicliftsme
1
Podczas gdy model jest podobny do innych modeli db, model zasobów Mage_Sales_Model_Resource_Quote implementuje filtr kodowany na stałe w identyfikatorze sklepu przez _getLoadSelect (). Sposób na to jest użycie Mage::getResourceSingleton('sales/quote')->loadByIdWithoutStore($quote, $order->getQuoteId()). Teraz, gdybym tylko mógł powiedzieć NIE ładować pełnego obiektu klienta i rozpocząć sesję, jestem szczęśliwym obozowiczem.
Melvyn
3
Dla każdego, kto ma to samo: SalesRule / Model / Observer.php tworzy sesję dotyczącą ładowania elementów oferty. Aby dostać się do CustomerGroupId. Rozwiązałem ten problem, przepisując Sales_Model_Quote i ustawiając identyfikator grupy klientów w Mage :: register i ucząc Mage_SalesRule_Model_Observer-> addProductAttributes, aby po raz pierwszy tam zajrzeć.
Melvyn
2
Właśnie to widziałem. Głosowałem za ponownym otwarciem. Dzięki Melvyn.
musicliftsme
0

Możesz użyć

$quote = Mage::getModel('sales/quote')->loadByIdWithoutStore($quoteId);

Działa w wersji Magnto Enterprise. 1.14.2.4

Blaz
źródło