Додайте стовпчик 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тоді він запускається і додається стовпець. Я спробував видалити атрибути довжини та зведення, але безрезультатно.

EDIT

Коли оновлення сценарію оновлюється наступним чином, воно працює. Хтось знає, що викликає цю помилку?

$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_TEXTале встановлено так, lengthщо скажімо, 255Magento створить колонку VARCHARтипу MySQL .


2
працює! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof

Я здивований, що це було так просто ... Клас каже, що він би перетворив внутрішньо застарілі типи в непридатні, але я припускаю, що це для вже існуючих значень? Так чи інакше, плюс один
Роббі Аверілл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.