|
12 | 12 | * --*names AND t.name IN (:@names) |
13 | 13 | * => |
14 | 14 | * AND t.name IN (:names_1, :names_2, :names_3, ...) |
| 15 | + * |
| 16 | + * Изначально рассчитано, что параметры могут приходить в следующем виде: |
| 17 | + * [':p1'=>'v1', ':p2' => ['value', 'PDO_SQL_TYPE'], ':p3' => ['value', 'bind'=>'text'], ':p4' => [['v1', 'v2', ...]]] |
| 18 | + * Второй способ никогда не видел, может в очень ранних проектах. |
| 19 | + * Третий способ тоже сомнительный, обычно пишут: ':p3' => ['bind' => 'text', 'value' => $value] - позиционно определять |
| 20 | + * параметры не лучший способ, правильнее задавать явно. |
| 21 | + * Четвертый способ тоже несколько странный и не соответствует способу для первого Yii - там просто указывали массив (не |
| 22 | + * вложенный). |
| 23 | + * Кроме того есть еще дополнительный тип биндинга - "tuple", не нашел в наших проектах его использования. |
| 24 | + * Ввиду 2-го и 3-го способов не получится уже реализовать простой способ указания массива, надо постоянно помнить про |
| 25 | + * вложенность. |
15 | 26 | */ |
16 | 27 | class Parser |
17 | 28 | { |
@@ -69,7 +80,8 @@ public function getSimplifiedParams() |
69 | 80 | } |
70 | 81 |
|
71 | 82 | /** |
72 | | - * Конвертирует параметры запроса из расширенного формата в параметры пригодные для \yii\db\Command::bindValues. |
| 83 | + * Конвертирует параметры запроса из расширенного формата в параметры пригодные для \yii\db\Command::bindValues(). |
| 84 | + * public function bindParam($name, &$value, $dataType = null, $length = null, $driverOptions = null) |
73 | 85 | * @param array $params Параметры построения запроса. |
74 | 86 | * @return array |
75 | 87 | */ |
@@ -126,6 +138,7 @@ private function simplifyParams(array $params) |
126 | 138 | $newParams[$key] = $value; |
127 | 139 | } |
128 | 140 | } |
| 141 | + |
129 | 142 | return $newParams; |
130 | 143 | } |
131 | 144 |
|
@@ -221,7 +234,7 @@ private function replaceComment($comment, $queryInComment, $paramName, $replaceN |
221 | 234 | } |
222 | 235 | } elseif (is_array($paramValue)) { |
223 | 236 | /** |
224 | | - * Значение параметра - это массив, но почему-то без элемента "bind". |
| 237 | + * Значение параметра - это массив, но без элемента "bind". |
225 | 238 | * Это случай, когда у нас элементы для списка значений IN. |
226 | 239 | * Там массив значений внутри массива - т.е. первым элементом массива является массив значений |
227 | 240 | * "связанной" переменной. |
|
0 commit comments