Невозможно загрузить объект цитаты

24

Работает ли sales/quoteобъект иначе, чем другие объекты при загрузке? Смотрите следующее ..

Работает:

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

Не работает:

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

Оба $quoteимеют правильный класс Mage_Sales_Model_Quote.

musicliftsme
источник
с 5 ответами я не понимаю, как этот вопрос помечен как не по теме и не воспроизводится. эту проблему можно воспроизвести. Просто загрузите цитату на странице просмотра заказа веб-интерфейса и на странице просмотра заказа администратора, это будет работать по-разному. Ответ webbiedave отлично работает в этом сценарии.
Рина Парех

Ответы:

29

Установите магазин первым:

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

$quote = Mage::getModel('sales/quote')->setStore($store)->load($quoteId);
webbiedave
источник
2

Нет, Mage_Sales_Model_Quoteкак и все другие модели на основе БД. Вы делаете что-то не так. Может быть, жесткий код $quoteId? Вы уверены, что это правильно? Оба кода должны работать.

Фабиан Блехшмидт
источник
Да, я пытался использовать целое число вместо $quoteId. Я начинаю думать, может быть, $quoteIdдолжна быть строка или что-то. Мой сценарий в настоящее время выполняется, поэтому я проверю завтра.
musicliftsme
Хм, он не работает и в другом экземпляре, с идентификатором объекта кавычки, жестко заключенным в строку или целое число. Фабиан, ты пробовал часть кода, который я разместил?
musicliftsme
1
Хотя модель аналогична другим моделям БД, модель ресурсов Mage_Sales_Model_Resource_Quote реализует жестко закодированный фильтр для идентификатора хранилища с помощью _getLoadSelect (). Способ обойти это использовать Mage::getResourceSingleton('sales/quote')->loadByIdWithoutStore($quote, $order->getQuoteId()). Теперь, если только я могу сказать, чтобы НЕ загружать полный объект клиента и начинать сеанс, я счастливый турист.
Мелвин
3
Для тех, кто сталкивается с тем же: это SalesRule / Model / Observer.php, который создает сеанс при загрузке элементов цитаты. Просто чтобы добраться до customerGroupId. Я решил эту проблему, переписав Sales_Model_Quote и установив идентификатор группы клиентов в Mage :: registry и обучив Mage_SalesRule_Model_Observer-> addProductAttributes для первого просмотра.
Мелвин
2
Просто видел это. Я проголосовал за повторное открытие. Спасибо Мелвин.
musicliftsme
0

Вы могли бы использовать

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

Работает в Magnto Enterprise ver. 1.14.2.4

Blaz
источник