2013-01-16 57 views
0

如果我添加这些列:Magento的1.7 - 添加列sales_flat_order_item

$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

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

另外,尽量使用

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

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

还可以做

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

,并检查 'shipping_status_id' 在

+0

我已经删除了完整的'/ var'文件夹,但相同的结果数据存在。再次测试并添加这两列。相同的结果。 – Guus

+1

尝试做$ o-> setData('shipping_status_id,123);它是否会返回相同的结果? – freento

+0

'$ o-> setData(“shipping_status_id”,123)'工作!怪怪'$ o-> setShippingStatusId(123);'不起作用。 – Guus

相关问题