@@ -206,7 +206,7 @@ protected function getPropertiesFromTable(Model $model): void
206206 $ type = $ column ['type_name ' ];
207207
208208 if ($ this ->isFieldFakeable ($ field , $ model )) {
209- $ this ->setProperty ($ model , $ field , $ type , $ nullable );
209+ $ this ->setProperty ($ model , $ field , $ type , $ column , $ nullable );
210210 }
211211 }
212212 }
@@ -254,8 +254,21 @@ protected function getPropertiesFromMethods(Model $model): void
254254 }
255255 }
256256
257- protected function setProperty (Model $ model , string $ field , string $ type , bool $ nullable = false ): void
257+ protected function setProperty (Model $ model , string $ field , string $ type , array $ column , bool $ nullable = false ): void
258258 {
259+ if ($ type === 'decimal ' ) {
260+ $ pattern = '/decimal\((?P<integer_digits>\d+),(?P<decimal_digits>\d+)\)/ ' ;
261+ if (preg_match ($ pattern , $ column ['type ' ], $ matches )) {
262+ $ integerDigits = $ matches ['integer_digits ' ];
263+ $ decimalDigits = $ matches ['decimal_digits ' ];
264+ }
265+
266+ $ maxNumber = pow (10 , $ integerDigits - $ decimalDigits ) - 1 ;
267+ $ this ->properties [$ field ] = $ this ->fakerPrefix ("randomFloat( $ decimalDigits, 0, $ maxNumber) " , $ nullable );
268+
269+ return ;
270+ }
271+
259272 if ($ enumValues = EnumValues::get ($ model , $ field )) {
260273 $ enumValues = implode ("', ' " , $ enumValues );
261274
@@ -405,7 +418,6 @@ protected function mapByType(string $field, bool $nullable = false): ?string
405418 'bigint ' => $ this ->fakerPrefix ('randomNumber() ' , $ nullable ),
406419 'smallint ' => $ this ->fakerPrefix ('randomNumber() ' , $ nullable ),
407420 'tinyint ' => $ this ->fakerPrefix ('randomNumber(1) ' , $ nullable ),
408- 'decimal ' => $ this ->fakerPrefix ('randomFloat() ' , $ nullable ),
409421 'float ' => $ this ->fakerPrefix ('randomFloat() ' , $ nullable ),
410422 'boolean ' => $ this ->fakerPrefix ('boolean ' , $ nullable ),
411423 ];
0 commit comments