Adicione a coluna varchar ao endereço do pedido

13

Estou tentando adicionar alguns campos varchar à tabela sales / order_address, mas estou enfrentando um erro de definição de coluna.

Eu tenho o seguinte código:

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

Isso retorna o erro: [message:protected] => Invalid column definition data

Se eu alterar o código a ser usado Varien_Db_Ddl_Table::TYPE_INTEGER, o código será executado e a coluna será adicionada. Eu tentei remover o comprimento e os atributos anuláveis, mas sem sucesso.

EDITAR

Ao atualizar o script é atualizado da seguinte forma, ele funciona. Alguém sabe o que causa esse erro?

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

Respostas:

52

Use TYPE_TEXT. TYPE_VARCHARestá obsoleto ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

E não se preocupe com o espaço de armazenamento. Se você especificar type, TYPE_TEXTmas definido lengthcomo lets say, o 255Magento criará uma coluna do VARCHARtipo MySQL .

user487772
fonte
2
trabalho ! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof 25/03
Estou surpreso que tenha sido simples assim ... A classe diz que converteria internamente os tipos preteridos em não preteridos, mas suponho que seja para valores preexistentes? De qualquer maneira, mais um #
Robbie Averill