Fügen Sie der Bestelladresse die Spalte varchar hinzu

13

Ich versuche, ein paar varchar-Felder zur Tabelle sales / order_address hinzuzufügen, stoße jedoch auf einen Spaltendefinitionsfehler.

Ich habe folgenden Code:

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

Dies gibt den Fehler zurück: [message:protected] => Invalid column definition data

Wenn ich den zu verwendenden Varien_Db_Ddl_Table::TYPE_INTEGERCode ändere, wird der Code ausgeführt und die Spalte hinzugefügt. Ich habe versucht, die Attribute length und nullable zu entfernen, aber ohne Erfolg.

BEARBEITEN

Wenn das Skript wie folgt aktualisiert wird, funktioniert es. Weiß jemand, was diesen Fehler verursacht?

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

Antworten:

52

Verwenden Sie TYPE_TEXT. TYPE_VARCHARist veraltet ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

Und mach dir keine Sorgen über den Stauraum. Wenn Sie type angeben, TYPE_TEXTaber festlegen length, dass 255Magento eine MySQL-Spalte vom VARCHARTyp erstellt.

user487772
quelle
2
funktioniert! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof
Ich bin überrascht, dass es so einfach war ... Die Klasse sagt, dass sie die veralteten Typen intern in nicht veraltete Typen konvertieren würde, aber ich nehme an, dass dies für bereits vorhandene Werte gilt. Wie auch immer, plus eins
Robbie Averill