Skip to content

Commit f03ae02

Browse files
Rafal PrzetakowskiRafal Przetakowski
authored andcommitted
Fix for queries with a duplicate condition key
1 parent c136799 commit f03ae02

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

SQLQuery.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,12 +285,29 @@ private function parseConditions()
285285
$records = $matches[2];
286286

287287
foreach ($keys as $key => $value) {
288-
$rec[ $value ] = $records[ $a ];
288+
if (isset($rec[ $value ]) && !is_array($rec[ $value ])) {
289+
$tmp = $rec[ $value ];
290+
$rec[ $value ] = [$tmp, $records[ $a ]];
291+
} else if (isset($rec[ $value ]) && is_array($rec[ $value ])) {
292+
$rec[ $value ][] = $records[ $a ];
293+
} else {
294+
$rec[ $value ] = $records[ $a ];
295+
}
296+
289297
$a++;
290298
}
291299

292300
foreach ($this->params as $parameterName => $value) {
293-
if (isset($rec[ $parameterName ]) && !empty($value['value'])) {
301+
302+
if (!isset($rec[ $parameterName ]) || empty($value['value'])) {
303+
continue;
304+
}
305+
306+
if (is_array($rec[ $parameterName ])) {
307+
foreach ($rec[ $parameterName ] as $arrayValue) {
308+
$sqlQuery = str_replace("{CON[{$parameterName}]:" . $arrayValue . ":CON}", $arrayValue, str_replace(array("\n", "\r", "\t"), " ", $sqlQuery));
309+
}
310+
} else {
294311
$sqlQuery = str_replace("{CON[{$parameterName}]:" . $rec[ $parameterName ] . ":CON}", $rec[ $parameterName ], str_replace(array("\n", "\r", "\t"), " ", $sqlQuery));
295312
}
296313
}

0 commit comments

Comments
 (0)