Inital commit
This commit is contained in:
53
setup/update/php/2.2.0-beta3.php
Normal file
53
setup/update/php/2.2.0-beta3.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
$pdo = $database->getConnection();
|
||||
|
||||
// Test if price columns are in float
|
||||
$sqlGetFloat = "SELECT COLUMN_NAME "
|
||||
. "FROM INFORMATION_SCHEMA.COLUMNS "
|
||||
. "WHERE TABLE_SCHEMA LIKE DATABASE() AND TABLE_NAME LIKE 'product_price' AND COLUMN_NAME LIKE 'price' AND COLUMN_TYPE LIKE 'float%'";
|
||||
|
||||
$stmtGetFloat = $pdo->query($sqlGetFloat);
|
||||
|
||||
// alter tables to convert float to decimal
|
||||
if ($stmtGetFloat->rowCount() !== 0) {
|
||||
$columns = [
|
||||
['product_price', 'price'],
|
||||
['product_price', 'promo_price'],
|
||||
['order_product', 'price'],
|
||||
['order', 'discount'],
|
||||
['order', 'postage'],
|
||||
['order', 'postage_tax'],
|
||||
['order_version', 'discount'],
|
||||
['order_version', 'postage'],
|
||||
['order_version', 'postage_tax'],
|
||||
['order_product_tax', 'amount'],
|
||||
['order_product_tax', 'promo_amount'],
|
||||
['cart', 'discount'],
|
||||
['cart_item', 'price'],
|
||||
['cart_item', 'promo_price'],
|
||||
['order_coupon', 'amount']
|
||||
];
|
||||
|
||||
$queries = [
|
||||
"ALTER TABLE `:table:` ADD COLUMN `:column:_temp` DECIMAL( 16, 6 ) NOT NULL DEFAULT '0.00000000' AFTER `:column:`",
|
||||
"UPDATE `:table:` SET `:column:_temp` = CAST(`:column:` as CHAR)",
|
||||
"ALTER TABLE `:table:` DROP COLUMN `:column:`",
|
||||
"ALTER TABLE `:table:` CHANGE COLUMN `:column:_temp` `:column:` DECIMAL( 16, 6 ) NOT NULL DEFAULT '0.00000000'",
|
||||
];
|
||||
|
||||
foreach ($columns as $column) {
|
||||
$args = [
|
||||
':table:' => $column[0],
|
||||
':column:' => $column[1]
|
||||
];
|
||||
|
||||
foreach ($queries as $query) {
|
||||
$stmtConvert = $pdo->prepare(strtr($query, $args));
|
||||
$stmtConvert->execute();
|
||||
}
|
||||
}
|
||||
|
||||
$stmtConvert = $pdo->prepare("ALTER TABLE `order_product` CHANGE `promo_price` `promo_price` DECIMAL( 16, 6 ) NOT NULL DEFAULT '0.00000000'");
|
||||
$stmtConvert->execute();
|
||||
}
|
||||
Reference in New Issue
Block a user