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 に答える