Skip to content

Commit 5deee08

Browse files
OrtekoAndrew Keynes
andauthored
Fix decimal fields being built as floats inside model casts (#856)
Co-authored-by: Andrew Keynes <[email protected]>
1 parent 983dc66 commit 5deee08

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

src/Common/GeneratorField.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ class GeneratorField
3131
public $inView = true;
3232
public $isNotNull = false;
3333

34+
/** @var int */
35+
public $numberDecimalPoints = 2;
36+
3437
/**
3538
* @param Column $column
3639
* @param $dbInput

src/Generators/ModelGenerator.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,10 @@ public function generateCasts()
333333
case 'double':
334334
$rule .= "'double'";
335335
break;
336-
case 'float':
337336
case 'decimal':
337+
$rule .= sprintf("'decimal:%d'", $field->numberDecimalPoints);
338+
break;
339+
case 'float':
338340
$rule .= "'float'";
339341
break;
340342
case 'boolean':

src/Utils/TableFieldsGenerator.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ private function generateNumberInput($column, $dbType)
278278
$field->parseDBType($dbType.','.$column->getPrecision().','.$column->getScale());
279279
$field->htmlType = 'number';
280280

281+
if ($dbType === 'decimal') {
282+
$field->numberDecimalPoints = $column->getScale();
283+
}
284+
281285
return $this->checkForPrimary($field);
282286
}
283287

0 commit comments

Comments
 (0)