Agregar columna varchar a la dirección del pedido

13

Estoy tratando de agregar algunos campos varchar a la tabla sales / order_address pero me encuentro con un error de definición de columna.

Tengo el siguiente 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'
        )
    );

Esto devuelve el error: [message:protected] => Invalid column definition data

Si cambio el código para usarlo Varien_Db_Ddl_Table::TYPE_INTEGER, el código se ejecuta y se agrega la columna. He intentado eliminar la longitud y los atributos anulables, pero fue en vano.

EDITAR

Al actualizar el script se actualiza de la siguiente manera, entonces funciona. ¿Alguien sabe qué causa este error?

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

Respuestas:

52

Uso TYPE_TEXT. TYPE_VARCHARestá en desuso ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

Y no te preocupes por el espacio de almacenamiento. Si especifica el tipo TYPE_TEXTpero se establece lengthen digamos que 255Magento creará una columna de VARCHARtipo MySQL .

usuario487772
fuente
2
trabajos ! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof
Me sorprende que fuera así de simple ... ¿La clase dice que convertiría internamente los tipos obsoletos en no obsoletos, pero supongo que eso es para valores preexistentes? De cualquier manera, más uno
Robbie Averill