如果我添加这些列:
$installer->run("ALTER TABLE sales_flat_order_item add COLUMN shipping_status_id int");
$installer->run("ALTER TABLE sales_flat_quote_item add COLUMN shipping_status_id int");
并运行此测试2次:
$o = Mage::getModel('sales/order_item');
$o->load(92);
print $o->getShippingStatusId() . "\n";
$o->setShippingStatusId(123);
$o->save();
我什么也没看到。
如果我删除列并添加:
$installer->run("ALTER TABLE sales_flat_order_item add COLUMN shipping_status int");
$installer->run("ALTER TABLE sales_flat_quote_item add COLUMN shipping_status int");
并运行此测试2次:
$o = Mage::getModel('sales/order_item');
$o->load(92);
print $o->getShippingStatus() . "\n";
$o->setShippingStatus(123);
$o->save();
然后它起作用,价值被保存,我可以把它拿回来。
列中的差异为_id
。为什么这不适用于第一个例子?它有什么特别之处吗?我检查了几次。
是否进行了另一项测试,并添加了两列:
$installer->run("ALTER TABLE sales_flat_order_item add COLUMN shipping_status_id int");
$installer->run("ALTER TABLE sales_flat_order_item add COLUMN shipping_status int");
$installer->run("ALTER TABLE sales_flat_quote_item add COLUMN shipping_status_id int");
$installer->run("ALTER TABLE sales_flat_quote_item add COLUMN shipping_status int");
测试:
$o = Mage::getModel('sales/order_item');
$o->load(92);
print $o->getItemId() . "/" . $o->getShippingStatusId() . "\n";
print $o->getItemId() . "/" . $o->getShippingStatus() . "\n";
$o->setShippingStatusId(123);
$o->setShippingStatus(456);
$o->save();
仅设置456
值并获取。
/var/cache
已删除。
答案 0 :(得分:0)
添加列后,您需要物理删除Magento缓存(/ var / cache /)。 Zend缓存您的表结构,因此需要在更新后刷新。
另外,尝试使用
$o->setData("shipping_status_id", 123);
尝试使用调试器更好地理解问题。
你也可以这样做
$o->setShippingStatusId(123);
var_dump($o->getData());
并检查数据中是否存在'shipping_status_id'