@@ -117,7 +117,9 @@ public function getTypes($class, $property, array $context = [])
117
117
$ typeOfField = $ subMetadata ->getTypeOfField ($ indexProperty );
118
118
}
119
119
120
- $ collectionKeyType = $ this ->getPhpType ($ typeOfField );
120
+ if (!$ collectionKeyType = $ this ->getPhpType ($ typeOfField )) {
121
+ return null ;
122
+ }
121
123
}
122
124
}
123
125
@@ -137,39 +139,46 @@ public function getTypes($class, $property, array $context = [])
137
139
138
140
if ($ metadata ->hasField ($ property )) {
139
141
$ typeOfField = $ metadata ->getTypeOfField ($ property );
140
- $ nullable = $ metadata instanceof ClassMetadataInfo && $ metadata ->isNullable ($ property );
141
-
142
- switch ($ typeOfField ) {
143
- case DBALType::DATE :
144
- case DBALType::DATETIME :
145
- case DBALType::DATETIMETZ :
146
- case 'vardatetime ' :
147
- case DBALType::TIME :
148
- return [new Type (Type::BUILTIN_TYPE_OBJECT , $ nullable , 'DateTime ' )];
149
142
150
- case 'date_immutable ' :
151
- case 'datetime_immutable ' :
152
- case 'datetimetz_immutable ' :
153
- case 'time_immutable ' :
154
- return [new Type (Type::BUILTIN_TYPE_OBJECT , $ nullable , 'DateTimeImmutable ' )];
155
-
156
- case 'dateinterval ' :
157
- return [new Type (Type::BUILTIN_TYPE_OBJECT , $ nullable , 'DateInterval ' )];
158
-
159
- case DBALType::TARRAY :
160
- return [new Type (Type::BUILTIN_TYPE_ARRAY , $ nullable , null , true )];
143
+ if (!$ builtinType = $ this ->getPhpType ($ typeOfField )) {
144
+ return null ;
145
+ }
161
146
162
- case DBALType::SIMPLE_ARRAY :
163
- return [new Type (Type::BUILTIN_TYPE_ARRAY , $ nullable , null , true , new Type (Type::BUILTIN_TYPE_INT ), new Type (Type::BUILTIN_TYPE_STRING ))];
147
+ $ nullable = $ metadata instanceof ClassMetadataInfo && $ metadata ->isNullable ($ property );
164
148
165
- case DBALType::JSON_ARRAY :
166
- return [new Type (Type::BUILTIN_TYPE_ARRAY , $ nullable , null , true )];
149
+ switch ($ builtinType ) {
150
+ case Type::BUILTIN_TYPE_OBJECT :
151
+ switch ($ typeOfField ) {
152
+ case DBALType::DATE :
153
+ case DBALType::DATETIME :
154
+ case DBALType::DATETIMETZ :
155
+ case 'vardatetime ' :
156
+ case DBALType::TIME :
157
+ return [new Type (Type::BUILTIN_TYPE_OBJECT , $ nullable , 'DateTime ' )];
158
+
159
+ case 'date_immutable ' :
160
+ case 'datetime_immutable ' :
161
+ case 'datetimetz_immutable ' :
162
+ case 'time_immutable ' :
163
+ return [new Type (Type::BUILTIN_TYPE_OBJECT , $ nullable , 'DateTimeImmutable ' )];
164
+
165
+ case 'dateinterval ' :
166
+ return [new Type (Type::BUILTIN_TYPE_OBJECT , $ nullable , 'DateInterval ' )];
167
+ }
167
168
168
- default :
169
- $ builtinType = $ this ->getPhpType ($ typeOfField );
169
+ break ;
170
+ case Type::BUILTIN_TYPE_ARRAY :
171
+ switch ($ typeOfField ) {
172
+ case DBALType::TARRAY :
173
+ case DBALType::JSON_ARRAY :
174
+ return [new Type (Type::BUILTIN_TYPE_ARRAY , $ nullable , null , true )];
170
175
171
- return $ builtinType ? [new Type ($ builtinType , $ nullable )] : null ;
176
+ case DBALType::SIMPLE_ARRAY :
177
+ return [new Type (Type::BUILTIN_TYPE_ARRAY , $ nullable , null , true , new Type (Type::BUILTIN_TYPE_INT ), new Type (Type::BUILTIN_TYPE_STRING ))];
178
+ }
172
179
}
180
+
181
+ return [new Type ($ builtinType , $ nullable )];
173
182
}
174
183
175
184
return null ;
@@ -234,7 +243,22 @@ private function getPhpType($doctrineType)
234
243
return Type::BUILTIN_TYPE_RESOURCE ;
235
244
236
245
case DBALType::OBJECT :
246
+ case DBALType::DATE :
247
+ case DBALType::DATETIME :
248
+ case DBALType::DATETIMETZ :
249
+ case 'vardatetime ' :
250
+ case DBALType::TIME :
251
+ case 'date_immutable ' :
252
+ case 'datetime_immutable ' :
253
+ case 'datetimetz_immutable ' :
254
+ case 'time_immutable ' :
255
+ case 'dateinterval ' :
237
256
return Type::BUILTIN_TYPE_OBJECT ;
257
+
258
+ case DBALType::TARRAY :
259
+ case DBALType::SIMPLE_ARRAY :
260
+ case DBALType::JSON_ARRAY :
261
+ return Type::BUILTIN_TYPE_ARRAY ;
238
262
}
239
263
240
264
return null ;
0 commit comments