@@ -19,20 +19,58 @@ class DataModelGenerator
1919 protected const BOOL_TRUE = 'true ' ;
2020 protected const BOOL_FALSE = 'false ' ;
2121
22+ protected const PHP_TYPE_INT = 'int ' ;
23+ protected const PHP_TYPE_STRING = 'string ' ;
24+ protected const PHP_TYPE_FLOAT = 'float ' ;
25+ protected const PHP_TYPE_RESOURCE = 'resource ' ;
26+ protected const PHP_TYPE_BOOL = 'bool ' ;
27+ protected const PHP_TYPE_DATETIME = '\\' . \DateTime::class;
28+ protected const PHP_TYPE_DATETIME_IMMUTABLE = '\\' . \DateTimeImmutable::class;
29+ protected const PHP_TYPE_DATEINTERVAL = '\\' . \DateInterval::class;
30+ protected const PHP_TYPE_ARRAY = 'array ' ;
31+ protected const PHP_TYPE_OBJECT = 'object ' ;
32+
2233 protected const TYPE_MAPPING = [
23- 'datetime ' => '\\' . \DateTime::class,
24- 'integer ' => 'int ' ,
25- 'boolean ' => 'bool ' ,
26- 'decimal ' => 'float ' ,
34+ // https://www.doctrine-project.org/projects/doctrine-dbal/en/2.8/reference/types.html
35+ 'smallint ' => self ::PHP_TYPE_INT ,
36+ 'integer ' => self ::PHP_TYPE_INT ,
37+ 'bigint ' => self ::PHP_TYPE_STRING ,
38+ 'decimal ' => self ::PHP_TYPE_STRING ,
39+ 'float ' => self ::PHP_TYPE_FLOAT ,
40+ 'string ' => self ::PHP_TYPE_STRING ,
41+ 'text ' => self ::PHP_TYPE_STRING ,
42+ 'guid ' => self ::PHP_TYPE_STRING ,
43+ 'binary ' => self ::PHP_TYPE_RESOURCE ,
44+ 'blob ' => self ::PHP_TYPE_RESOURCE ,
45+ 'boolean ' => self ::PHP_TYPE_BOOL ,
46+ 'date ' => self ::PHP_TYPE_DATETIME ,
47+ 'date_immutable ' => self ::PHP_TYPE_DATETIME_IMMUTABLE ,
48+ 'datetime ' => self ::PHP_TYPE_DATETIME ,
49+ 'datetime_immutable ' => self ::PHP_TYPE_DATETIME_IMMUTABLE ,
50+ 'datetimetz ' => self ::PHP_TYPE_DATETIME ,
51+ 'datetimetz_immutable ' => self ::PHP_TYPE_DATETIME_IMMUTABLE ,
52+ 'time ' => self ::PHP_TYPE_DATETIME ,
53+ 'time_immutable ' => self ::PHP_TYPE_DATETIME_IMMUTABLE ,
54+ 'dateinterval ' => self ::PHP_TYPE_DATEINTERVAL ,
55+ 'array ' => self ::PHP_TYPE_ARRAY ,
56+ 'simple_array ' => self ::PHP_TYPE_ARRAY ,
57+ 'json ' => self ::PHP_TYPE_ARRAY ,
58+ 'json_array ' => self ::PHP_TYPE_ARRAY ,
59+ 'object ' => self ::PHP_TYPE_OBJECT ,
2760 ];
2861
2962 protected const TYPE_DEFAULT_VALUE = '0 ' ;
3063 protected const TYPE_DEFAULT_VALUES_MAPPING = [
31- 'string ' => '\'\'' ,
32- 'datetime ' => 'new \DateTime() ' ,
33- 'integer ' => '0 ' ,
34- 'boolean ' => self ::BOOL_FALSE ,
35- 'decimal ' => '0 ' ,
64+ self ::PHP_TYPE_INT => '0 ' ,
65+ self ::PHP_TYPE_STRING => '\'\'' ,
66+ self ::PHP_TYPE_FLOAT => '0.0 ' ,
67+ self ::PHP_TYPE_RESOURCE => 'null ' ,
68+ self ::PHP_TYPE_BOOL => self ::BOOL_FALSE ,
69+ self ::PHP_TYPE_DATETIME => 'new ' . self ::PHP_TYPE_DATETIME . '() ' ,
70+ self ::PHP_TYPE_DATETIME_IMMUTABLE => 'new ' . self ::PHP_TYPE_DATETIME_IMMUTABLE . '() ' ,
71+ self ::PHP_TYPE_DATEINTERVAL => 'new ' . self ::PHP_TYPE_DATEINTERVAL . '() ' ,
72+ self ::PHP_TYPE_ARRAY => '[] ' ,
73+ self ::PHP_TYPE_OBJECT => 'null ' ,
3674 ];
3775
3876 /**
@@ -367,7 +405,7 @@ protected function generateBaseEntities(): void
367405 }
368406
369407 if ($ defaultValue === null && !$ field ->isNullable ()) {
370- $ defaultValue = static ::TYPE_DEFAULT_VALUES_MAPPING [$ fieldType ]
408+ $ defaultValue = static ::TYPE_DEFAULT_VALUES_MAPPING [$ phpDocType ]
371409 ?? static ::TYPE_DEFAULT_VALUE ;
372410 }
373411
0 commit comments