これらの列を追加すると、次のようになります。
$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
削除されます。