Thêm cột varchar vào địa chỉ đặt hàng


13

Tôi đang cố gắng thêm một vài trường varchar vào bảng sales / order_address nhưng sắp xảy ra lỗi với định nghĩa cột.

Tôi có đoạn mã sau:

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

Điều này trả về lỗi: [message:protected] => Invalid column definition data

Nếu tôi thay đổi mã để sử dụng Varien_Db_Ddl_Table::TYPE_INTEGERthì mã sẽ chạy và cột được thêm vào. Tôi đã cố gắng loại bỏ các thuộc tính độ dài và nullable nhưng không có kết quả.

BIÊN TẬP

Khi cập nhật tập lệnh được cập nhật như sau thì nó hoạt động. Có ai biết nguyên nhân gây ra lỗi này?

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

Câu trả lời:


52

Sử dụng TYPE_TEXT. TYPE_VARCHARkhông dùng nữa ( @see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

Và đừng lo lắng về không gian lưu trữ. Nếu bạn chỉ định loại TYPE_TEXTnhưng được đặt lengththành cho phép 255Magento sẽ tạo một cột VARCHARkiểu MySQL .


2
làm ! ->addColumn('name', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array( 'nullable' => true, 'length' => 255, ), null)
Martijn van Hoof

Tôi ngạc nhiên rằng nó đơn giản như vậy ... Lớp nói rằng nó sẽ chuyển đổi nội bộ các loại không dùng nữa sang loại không dùng nữa, nhưng tôi cho rằng đó là giá trị có sẵn? Dù bằng cách nào, cộng với một
Robbie Averill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.