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

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.