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

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 .


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.