Aggiungi la colonna varchar per ordinare l'indirizzo


13

Sto cercando di aggiungere alcuni campi varchar alla tabella sales / order_address ma sto riscontrando un errore di definizione della colonna.

Ho il codice seguente:

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

Questo restituisce l'errore: [message:protected] => Invalid column definition data

Se cambio il codice da utilizzare, Varien_Db_Ddl_Table::TYPE_INTEGERil codice viene eseguito e viene aggiunta la colonna. Ho provato a rimuovere gli attributi length e nullable ma senza risultati.

MODIFICARE

Quando si aggiorna lo script viene aggiornato come segue, quindi funziona. Qualcuno sa cosa causa questo errore?

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

Risposte:


52

Usa TYPE_TEXT. TYPE_VARCHARè deprecato ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

E non preoccuparti dello spazio di archiviazione. Se si specifica il tipo TYPE_TEXTma si imposta lengthsu diciamo che 255Magento creerà una colonna di VARCHARtipo MySQL .


2
lavori ! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof,

Sono sorpreso che fosse così semplice ... La classe dice che convertirà internamente i tipi deprecati in non deprecati, ma suppongo che sia per valori preesistenti? Ad ogni modo, più uno
Robbie Averill il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.