Angebot kann nicht geladen werden

24

Funktioniert das sales/quoteObjekt beim Laden anders als andere Objekte? Siehe die folgenden ..

Werke:

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

Funktioniert nicht:

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

Beide $quotesind von der richtigen Klasse Mage_Sales_Model_Quote.

musicliftsme
quelle
Mit 5 Upvotes verstehe ich nicht, wie diese Frage als nicht thematisch und nicht reproduzierbar markiert ist. Dieses Problem kann reproduziert werden. Laden Sie einfach ein Angebot auf der Frontend-Bestellansichtsseite und auf der Admin-Bestellansichtsseite. In diesem Szenario funktioniert die Antwort von webbiedave perfekt.
Reena Parekh

Antworten:

29

Stellen Sie zuerst den Laden ein:

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

$quote = Mage::getModel('sales/quote')->setStore($store)->load($quoteId);
webbiedave
quelle
2

Nö, Mage_Sales_Model_Quoteist wie alle anderen db-basierten Modelle. Du machst etwas falsch. Vielleicht die Hardcode $quoteId? Bist du sicher, dass es richtig ist? Beide Codes sollten funktionieren.

Fabian Blechschmidt
quelle
Ja, ich habe versucht, eine ganze Zahl anstelle von zu verwenden $quoteId. Ich fange an zu denken, dass es vielleicht $quoteIdeine Saite oder so sein muss. Mein Skript läuft gerade, also werde ich morgen nachsehen.
Musicliftsme
Hmm, es funktioniert auch nicht auf einer anderen Instanz, bei der die Anführungszeichen-Entitäts-ID in einer Zeichenfolge oder einer Ganzzahl fest verbunden ist. Fabian, hast du den Code ausprobiert, den ich gepostet habe?
musicliftsme
1
Während das Modell genau wie andere Datenbankmodelle ist, implementiert das Ressourcenmodell Mage_Sales_Model_Resource_Quote einen fest codierten Filter für die Geschäfts-ID von _getLoadSelect (). Der Weg herum ist zu benutzen Mage::getResourceSingleton('sales/quote')->loadByIdWithoutStore($quote, $order->getQuoteId()). Wenn ich jetzt nur sagen kann, dass KEIN vollständiges Kundenobjekt geladen und eine Sitzung gestartet werden soll, bin ich ein glücklicher Camper.
Melvyn
3
Für alle, die sich dem gleichen Problem gegenübersehen: Es ist die SalesRule / Model / Observer.php, die eine Sitzung zum Laden von Angebotselementen auslöst. Nur um zur customerGroupId zu gelangen. Ich habe dieses Problem behoben, indem ich Sales_Model_Quote umgeschrieben und die Kundengruppen-ID in Mage :: registry festgelegt und Mage_SalesRule_Model_Observer-> addProductAttributes angewiesen habe, zuerst dort nachzuschauen.
Melvyn
2
Hab das gerade gesehen. Ich habe für die Wiedereröffnung gestimmt. Vielen Dank, Melvyn.
musicliftsme
0

Du könntest benutzen

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

Es funktioniert in Magnto Enterprise ver. 1.14.2.4

Blaz
quelle