Tambahkan kolom varchar ke alamat pesanan

13

Saya mencoba untuk menambahkan beberapa bidang varchar ke tabel sales / order_address tetapi saya menghadapi kesalahan definisi kolom.

Saya memiliki kode berikut:

$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'
        )
    );

Ini mengembalikan kesalahan: [message:protected] => Invalid column definition data

Jika saya mengubah kode yang akan digunakan Varien_Db_Ddl_Table::TYPE_INTEGERmaka kode tersebut berjalan dan kolom ditambahkan. Saya telah mencoba menghapus atribut yang panjang dan nullable tetapi tidak berhasil.

EDIT

Ketika memperbarui skrip diperbarui sebagai berikut maka itu berfungsi. Adakah yang tahu apa yang menyebabkan kesalahan ini?

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

Jawaban:

52

Gunakan TYPE_TEXT. TYPE_VARCHARsudah usang ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

Dan jangan khawatir tentang ruang penyimpanan. Jika Anda menentukan jenis TYPE_TEXTtetapi mengatur lengthagar katakanlah 255Magento akan membuat kolom VARCHARjenis MySQL .

pengguna487772
sumber
2
bekerja! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof
Saya terkejut bahwa ini sesederhana ini ... Kelas mengatakan secara internal akan mengkonversi tipe yang sudah tidak digunakan menjadi yang tidak digunakan lagi, tetapi saya kira itu untuk nilai yang sudah ada sebelumnya? Either way, plus satu
Robbie Averill