Browse Source

Decimal support for MySQL. #3171

U-Zyn Chua 12 years ago
parent
commit
7fb51ab50f

+ 5 - 1
lib/Cake/Model/Datasource/Database/Mysql.php

@@ -112,6 +112,7 @@ class Mysql extends DboSource {
 		'biginteger' => array('name' => 'bigint', 'limit' => '20'),
 		'biginteger' => array('name' => 'bigint', 'limit' => '20'),
 		'integer' => array('name' => 'int', 'limit' => '11', 'formatter' => 'intval'),
 		'integer' => array('name' => 'int', 'limit' => '11', 'formatter' => 'intval'),
 		'float' => array('name' => 'float', 'formatter' => 'floatval'),
 		'float' => array('name' => 'float', 'formatter' => 'floatval'),
+		'decimal' => array('name' => 'decimal', 'formatter' => 'floatval'),
 		'datetime' => array('name' => 'datetime', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'),
 		'datetime' => array('name' => 'datetime', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'),
 		'timestamp' => array('name' => 'timestamp', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'),
 		'timestamp' => array('name' => 'timestamp', 'format' => 'Y-m-d H:i:s', 'formatter' => 'date'),
 		'time' => array('name' => 'time', 'format' => 'H:i:s', 'formatter' => 'date'),
 		'time' => array('name' => 'time', 'format' => 'H:i:s', 'formatter' => 'date'),
@@ -763,9 +764,12 @@ class Mysql extends DboSource {
 		if (strpos($col, 'blob') !== false || $col === 'binary') {
 		if (strpos($col, 'blob') !== false || $col === 'binary') {
 			return 'binary';
 			return 'binary';
 		}
 		}
-		if (strpos($col, 'float') !== false || strpos($col, 'double') !== false || strpos($col, 'decimal') !== false) {
+		if (strpos($col, 'float') !== false || strpos($col, 'double') !== false) {
 			return 'float';
 			return 'float';
 		}
 		}
+		if (strpos($col, 'decimal') !== false) {
+			return 'decimal';
+		}
 		if (strpos($col, 'enum') !== false) {
 		if (strpos($col, 'enum') !== false) {
 			return "enum($vals)";
 			return "enum($vals)";
 		}
 		}

+ 5 - 1
lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php

@@ -543,8 +543,12 @@ class MysqlTest extends CakeTestCase {
 		$expected = 'float';
 		$expected = 'float';
 		$this->assertEquals($expected, $result);
 		$this->assertEquals($expected, $result);
 
 
+		$result = $this->Dbo->column('decimal');
+		$expected = 'decimal';
+		$this->assertEquals($expected, $result);
+
 		$result = $this->Dbo->column('decimal(14,7) unsigned');
 		$result = $this->Dbo->column('decimal(14,7) unsigned');
-		$expected = 'float';
+		$expected = 'decimal';
 		$this->assertEquals($expected, $result);
 		$this->assertEquals($expected, $result);
 	}
 	}