如果我添加这些列:
$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
被删除。