インスタンス内の注文エンティティ データのサイズが拡大し続けていることを考えると、これを実行することをお勧めします。ただし、CE1.6+ はMage_Sales_Model_Resource_Setup
[link]クラスを持つ最初のリリースであるため、Magento のどのバージョンに興味があります。CE1.6 より前は、クラスはMage_Sales_Model_Mysql4_Setup
[link]でした。これらのクラスの列定義方法は、1.6 以降の DB に依存しないアプローチに対応するために異なるため、これは重要な違いです。
Mage_Sales_Model_Mysql4_Setup::_getAttributeColumnDefinition
[リンク] :
protected function _getAttributeColumnDefinition($code, $data)
{
$columnDefinition = '';
$type = isset($data['type']) ? $data['type'] : 'varchar';
$req = isset($data['required']) ? $data['required'] : false;
switch ($type) {
case 'int':
$columnDefinition = 'int(10) unsigned';
break;
case 'decimal':
$columnDefinition = 'decimal(12,4)';
break;
case 'text':
$columnDefinition = 'text';
break;
case 'date':
$columnDefinition = 'datetime';
break;
default:
$columnDefinition = 'varchar(255)';
break;
}
if ($req) {
$columnDefinition.= ' NOT NULL';
}
return $columnDefinition;
}
そしてMage_Sales_Model_Resource_Setup::_getAttributeColumnDefinition
[リンク]:
protected function _getAttributeColumnDefinition($code, $data)
{
// Convert attribute type to column info
$data['type'] = isset($data['type']) ? $data['type'] : 'varchar';
$type = null;
$length = null;
switch ($data['type']) {
case 'timestamp':
$type = Varien_Db_Ddl_Table::TYPE_TIMESTAMP;
break;
case 'datetime':
$type = Varien_Db_Ddl_Table::TYPE_DATETIME;
break;
case 'decimal':
$type = Varien_Db_Ddl_Table::TYPE_DECIMAL;
$length = '12,4';
break;
case 'int':
$type = Varien_Db_Ddl_Table::TYPE_INTEGER;
break;
case 'text':
$type = Varien_Db_Ddl_Table::TYPE_TEXT;
$length = 65536;
break;
case 'char':
case 'varchar':
$type = Varien_Db_Ddl_Table::TYPE_TEXT;
$length = 255;
break;
}
if ($type !== null) {
$data['type'] = $type;
$data['length'] = $length;
}
$data['nullable'] = isset($data['required']) ? !$data['required'] : true;
$data['comment'] = isset($data['comment']) ? $data['comment'] : ucwords(str_replace('_', ' ', $code));
return $data;
}