0

我需要在请求之间传递一组未保存的 Mage_Sales_Model_Order 对象。试图将它们保存在结帐/会话中,但它们似乎没有保存在数据库中。此外,之后添加到核心/会话的所有数据也会消失。我的代码:

在模型中:

//$orders is an array of orders
Mage::getSingleton('checkout/session')->setOrders($orders);
Mage::getSingleton('core/session')->setIsMultishipping(true);

// ...

在控制器中:

$this->_redirectUrl($url);

首先,我认为 order 不是可序列化的对象,所以我在解释器中尝试了这个:

$serialized = serialize(Mage::getModel('sales/order')->load(1111));

它按预期返回了字符串。然后我检查了序列化顺序是否适合存储会话的最大字段大小:

> echo strlen($serialized);
11465

考虑到用于在数据库中存储会话数据的 mediumblob 字段类型,这是一个很小的值。

您是否知道 Magento 在数据库中静默保存会话失败的任何不同原因?

谢谢。

4

1 回答 1

0

Ok, I've figured out that it was my fault - the objects my orders were depending on were changed/deleted before orders were saved in the database, so serializing failed silently.

于 2013-06-24T08:02:38.897 回答