Magento 1.7 - 将列添加到sales_flat_order_item

时间:2013-01-16 08:51:03

标签: magento magento-1.7

如果我添加这些列:

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

1 个答案:

答案 0 :(得分:0)

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

另外,尝试使用

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

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

你也可以这样做

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

并检查数据中是否存在'shipping_status_id'