注文住所にvarchar列を追加


13

sales / order_addressテーブルにいくつかのvarcharフィールドを追加しようとしていますが、列定義エラーが発生しています。

私は次のコードを持っています:

$oInstaller->getConnection()
    ->addColumn(
        $oInstaller->getTable('sales/order_address'),
        'address_email',
        array(
            'nullable' => false,
            'length' => 255,
            'type' => Varien_Db_Ddl_Table::TYPE_VARCHAR,
            'comment' => 'Company Email Address'
        )
    );

これはエラーを返します: [message:protected] => Invalid column definition data

使用するコードを変更するVarien_Db_Ddl_Table::TYPE_INTEGERと、コードが実行され、列が追加されます。長さとnull属性を削除しようとしましたが、役に立ちませんでした。

編集

スクリプトを更新すると、次のように更新され、動作します。誰がこのエラーの原因を知っていますか?

$oInstaller->getConnection()
    ->addColumn(
        $oInstaller->getTable('sales/order_address'),
        'address_email',
        Varien_Db_Ddl_Table::TYPE_VARCHAR . '(255)'
    );

回答:


52

を使用しTYPE_TEXTます。TYPE_VARCHAR非推奨(@see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes

また、ストレージ容量について心配する必要はありません。typeを指定し、MagentoがtypeのMySQLカラムを作成できるようにTYPE_TEXT設定されlengthている場合。255VARCHAR


2
動作します!->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
マーティンヴァンホーフ

これが単純だったことに驚いています...クラスは、非推奨の型を非推奨に内部的に変換すると言いますが、既存の値のためだと思いますか?いずれにせよ、プラス1
ロビーアヴェリル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.