@@ -73,12 +73,12 @@ public function getResultType(string $queryString, int $fetchType): ?Type
73
73
*
74
74
* @throws UnresolvableQueryException
75
75
*/
76
- public function resolvePreparedQueryStrings (Expr $ queryExpr , Type $ parameterTypes , Scope $ scope ): iterable
76
+ public function resolvePreparedQueryStrings (Expr $ queryExpr , Type $ parameterTypes , ? Type $ boundParameterTypes , Scope $ scope ): iterable
77
77
{
78
78
$ type = $ scope ->getType ($ queryExpr );
79
79
80
80
if ($ type instanceof UnionType) {
81
- $ parameters = $ this ->resolveParameters ($ parameterTypes );
81
+ $ parameters = $ this ->resolveParameters ($ parameterTypes, $ boundParameterTypes );
82
82
if (null === $ parameters ) {
83
83
return null ;
84
84
}
@@ -103,15 +103,15 @@ public function resolvePreparedQueryStrings(Expr $queryExpr, Type $parameterType
103
103
*
104
104
* @throws UnresolvableQueryException
105
105
*/
106
- public function resolvePreparedQueryString (Expr $ queryExpr , Type $ parameterTypes , Scope $ scope ): ?string
106
+ public function resolvePreparedQueryString (Expr $ queryExpr , Type $ parameterTypes , ? Type , $ boundParameterTypes , Scope $ scope ): ?string
107
107
{
108
108
$ queryString = $ this ->resolveQueryExpr ($ queryExpr , $ scope );
109
109
110
110
if (null === $ queryString ) {
111
111
return null ;
112
112
}
113
113
114
- $ parameters = $ this ->resolveParameters ($ parameterTypes );
114
+ $ parameters = $ this ->resolveParameters ($ parameterTypes, $ boundParameterTypes );
115
115
if (null === $ parameters ) {
116
116
return null ;
117
117
}
@@ -211,20 +211,20 @@ public static function getQueryType(string $query): ?string
211
211
*
212
212
* @throws UnresolvableQueryException
213
213
*/
214
- public function resolveParameters (Type $ parameterTypes ): ?array
214
+ public function resolveParameters (Type $ parameterTypes, ? Type $ boundParameterTypes ): ?array
215
215
{
216
216
$ parameters = [];
217
217
218
218
if ($ parameterTypes instanceof UnionType) {
219
219
foreach (TypeUtils::getConstantArrays ($ parameterTypes ) as $ constantArray ) {
220
- $ parameters = $ parameters + $ this ->resolveConstantArray ($ constantArray , true );
220
+ $ parameters = $ parameters + $ this ->resolveConstantArray ($ constantArray , $ boundParameterTypes , true );
221
221
}
222
222
223
223
return $ parameters ;
224
224
}
225
225
226
226
if ($ parameterTypes instanceof ConstantArrayType) {
227
- return $ this ->resolveConstantArray ($ parameterTypes , false );
227
+ return $ this ->resolveConstantArray ($ parameterTypes , $ boundParameterTypes , false );
228
228
}
229
229
230
230
return null ;
@@ -235,7 +235,7 @@ public function resolveParameters(Type $parameterTypes): ?array
235
235
*
236
236
* @throws UnresolvableQueryException
237
237
*/
238
- private function resolveConstantArray (ConstantArrayType $ parameterTypes , bool $ forceOptional ): array
238
+ private function resolveConstantArray (ConstantArrayType $ parameterTypes , ? Type $ boundParameterTypes , bool $ forceOptional ): array
239
239
{
240
240
$ parameters = [];
241
241
@@ -259,7 +259,7 @@ private function resolveConstantArray(ConstantArrayType $parameterTypes, bool $f
259
259
$ param = new Parameter (
260
260
$ placeholderName ,
261
261
$ valueTypes [$ i ],
262
- QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ),
262
+ QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ), // TODO pass $i of $boundParameterTypes here if a resolved constant type is available?
263
263
$ isOptional
264
264
);
265
265
@@ -268,7 +268,7 @@ private function resolveConstantArray(ConstantArrayType $parameterTypes, bool $f
268
268
$ param = new Parameter (
269
269
null ,
270
270
$ valueTypes [$ i ],
271
- QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ),
271
+ QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ), // TODO pass $i of $boundParameterTypes here if a resolved constant type is available?
272
272
$ isOptional
273
273
);
274
274
0 commit comments