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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.