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.