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

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 .


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.