Skip to content

Commit acf03d3

Browse files
authored
added additional doctrine type support
1 parent 20f22e9 commit acf03d3

File tree

1 file changed

+48
-10
lines changed

1 file changed

+48
-10
lines changed

src/DataModelGenerator/DataModelGenerator.php

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)