Добавить столбец varchar в адрес заказа

13

Я пытаюсь добавить несколько полей varchar в таблицу sales / order_address, но сталкиваюсь с ошибкой определения столбца.

У меня есть следующий код:

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

Это возвращает ошибку: [message:protected] => Invalid column definition data

Если я изменяю код для использования, Varien_Db_Ddl_Table::TYPE_INTEGERто код запускается, и столбец добавляется. Я попытался удалить атрибуты length и nullable, но безрезультатно.

РЕДАКТИРОВАТЬ

При обновлении скрипт обновляется следующим образом, тогда он работает. Кто-нибудь знает, что вызывает эту ошибку?

$oInstaller->getConnection()
    ->addColumn(
        $oInstaller->getTable('sales/order_address'),
        'address_email',
        Varien_Db_Ddl_Table::TYPE_VARCHAR . '(255)'
    );
Дэвид Мэннерс
источник

Ответы:

52

Использование TYPE_TEXT. TYPE_VARCHARустарела ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

И не беспокойтесь о месте для хранения. Если вы укажете type, TYPE_TEXTно укажете lengthдопустим, скажем, 255Magento создаст столбец MySQL VARCHARтипа.

user487772
источник
2
работает ! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Мартейн ван Хоф
Я удивлен, что это было так просто ... Класс говорит, что он внутренне преобразует устаревшие типы в не устаревшие, но я полагаю, что это для ранее существующих значений? В любом случае, плюс один
Робби Аверилл