0

如果我添加这些列:

$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被删除。

4

1 回答 1

0

添加列后,您需要物理删除 Magento 缓存(/var/cache/)。Zend 缓存了你的表结构,所以更新后需要刷新。

另外,尝试使用

$o->setData("shipping_status_id", 123);

尝试使用调试器更好地理解问题。

你也可以做

$o->setShippingStatusId(123); 
var_dump($o->getData()); 

并检查数据中是否存在“shipping_status_id”

于 2013-01-16T08:56:42.403 回答