Dodaj kolumnę varchar, aby zamówić adres

13

Próbuję dodać kilka pól varchar do tabeli sales / order_address, ale napotykam na błąd definicji kolumny.

Mam następujący kod:

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

To zwraca błąd: [message:protected] => Invalid column definition data

Jeśli zmienię kod na używany, Varien_Db_Ddl_Table::TYPE_INTEGERkod zostanie uruchomiony i kolumna zostanie dodana. Próbowałem usunąć atrybuty długości i zerowania, ale bezskutecznie.

EDYTOWAĆ

Podczas aktualizacji skrypt jest aktualizowany w następujący sposób, a następnie działa. Czy ktoś wie, co powoduje ten błąd?

$oInstaller->getConnection()
    ->addColumn(
        $oInstaller->getTable('sales/order_address'),
        'address_email',
        Varien_Db_Ddl_Table::TYPE_VARCHAR . '(255)'
    );
David Manners
źródło

Odpowiedzi:

52

Zastosowanie TYPE_TEXT. TYPE_VARCHARjest przestarzałe ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

I nie martw się o miejsce do przechowywania. Jeśli podasz typ, TYPE_TEXTale ustawisz lengthna powiedzmy, że 255Magento utworzy kolumnę VARCHARtypu MySQL .

użytkownik487772
źródło
2
Pracuje ! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof
Dziwię się, że to było takie proste ... Klasa twierdzi, że wewnętrznie przekształci przestarzałe typy w nieaktualne, ale przypuszczam, że dotyczy to wcześniej istniejących wartości? Tak czy inaczej, plus jeden
Robbie Averill