diff --git a/Parser.php b/Parser.php index 718d8fa..8f101d5 100644 --- a/Parser.php +++ b/Parser.php @@ -12,6 +12,17 @@ * --*names AND t.name IN (:@names) * => * AND t.name IN (:names_1, :names_2, :names_3, ...) + * + * Изначально рассчитано, что параметры могут приходить в следующем виде: + * [':p1'=>'v1', ':p2' => ['value', 'PDO_SQL_TYPE'], ':p3' => ['value', 'bind'=>'text'], ':p4' => [['v1', 'v2', ...]]] + * Второй способ никогда не видел, может в очень ранних проектах. + * Третий способ тоже сомнительный, обычно пишут: ':p3' => ['bind' => 'text', 'value' => $value] - позиционно определять + * параметры не лучший способ, правильнее задавать явно. + * Четвертый способ тоже несколько странный и не соответствует способу для первого Yii - там просто указывали массив (не + * вложенный). + * Кроме того есть еще дополнительный тип биндинга - "tuple", не нашел в наших проектах его использования. + * Ввиду 2-го и 3-го способов не получится уже реализовать простой способ указания массива, надо постоянно помнить про + * вложенность. */ class Parser { @@ -69,7 +80,8 @@ public function getSimplifiedParams() } /** - * Конвертирует параметры запроса из расширенного формата в параметры пригодные для \yii\db\Command::bindValues. + * Конвертирует параметры запроса из расширенного формата в параметры пригодные для \yii\db\Command::bindValues(). + * public function bindParam($name, &$value, $dataType = null, $length = null, $driverOptions = null) * @param array $params Параметры построения запроса. * @return array */ @@ -126,6 +138,7 @@ private function simplifyParams(array $params) $newParams[$key] = $value; } } + return $newParams; } @@ -221,7 +234,7 @@ private function replaceComment($comment, $queryInComment, $paramName, $replaceN } } elseif (is_array($paramValue)) { /** - * Значение параметра - это массив, но почему-то без элемента "bind". + * Значение параметра - это массив, но без элемента "bind". * Это случай, когда у нас элементы для списка значений IN. * Там массив значений внутри массива - т.е. первым элементом массива является массив значений * "связанной" переменной.