将varchar列添加到订单地址


13

我正在尝试将一些varchar字段添加到sales / order_address表中,但是遇到列定义错误。

我有以下代码:

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

这将返回错误: [message:protected] => Invalid column definition data

如果我更改要使用的代码,Varien_Db_Ddl_Table::TYPE_INTEGER则代码将运行并添加该列。我试图删除长度和可为空的属性,但无济于事。

编辑

当更新脚本时,如下更新脚本,它将起作用。有人知道导致此错误的原因吗?

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

Answers:


52

使用TYPE_TEXTTYPE_VARCHAR已弃用(@see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes

不用担心存储空间。如果您指定类型TYPE_TEXT但设置length为,255Magento将创建一个MySQL VARCHAR类型列。


2
工程!->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
马丁·霍夫

我很惊讶这是如此简单...类表示它将在内部将不赞成使用的类型转换为不赞成使用的类型,但是我想那是针对预先存在的值吗?无论哪种方式,加一
Robbie Averill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.