Ajouter une colonne varchar à l'adresse de commande

13

J'essaie d'ajouter quelques champs varchar à la table sales / order_address mais je rencontre une erreur de définition de colonne.

J'ai le code suivant:

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

Cela renvoie l'erreur: [message:protected] => Invalid column definition data

Si je change le code à utiliser, Varien_Db_Ddl_Table::TYPE_INTEGERle code s'exécute et la colonne est ajoutée. J'ai essayé de supprimer la longueur et les attributs nullables mais en vain.

ÉDITER

Lorsque la mise à jour du script est mise à jour comme suit, cela fonctionne. Quelqu'un sait-il ce qui cause cette erreur?

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

Réponses:

52

Utilisez TYPE_TEXT. TYPE_VARCHARest obsolète ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

Et ne vous inquiétez pas de l'espace de stockage. Si vous spécifiez le type TYPE_TEXTmais que vous définissez lengthsur, disons que 255Magento créera une colonne MySQL de VARCHARtype.

user487772
la source
2
travaux ! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof
Je suis surpris que ce soit aussi simple ... La classe dit qu'elle convertirait en interne les types obsolètes en non-obsolètes, mais je suppose que c'est pour les valeurs préexistantes? Quoi qu'il en soit, plus un
Robbie Averill