From 6946058629aa9cacbd7b362a5cad4bca55b548a8 Mon Sep 17 00:00:00 2001 From: mark_story Date: Sun, 21 Sep 2014 23:06:35 -0400 Subject: [PATCH] Fix up SQLite INSERT query generation The UNION ALL transformation had to be updated so it reflected the root query type using named placeholders instead of nameless ones. --- src/Database/Dialect/SqliteDialectTrait.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Database/Dialect/SqliteDialectTrait.php b/src/Database/Dialect/SqliteDialectTrait.php index 06415cd0baf..d60e5bc854d 100644 --- a/src/Database/Dialect/SqliteDialectTrait.php +++ b/src/Database/Dialect/SqliteDialectTrait.php @@ -116,15 +116,21 @@ protected function _insertQueryTranslator($query) { $newQuery = $query->connection()->newQuery(); $cols = $v->columns(); + $placeholder = 0; $replaceQuery = false; + foreach ($v->values() as $k => $val) { $fillLength = count($cols) - count($val); if ($fillLength > 0) { $val = array_merge($val, array_fill(0, $fillLength, null)); } - $val = array_map(function ($val) { - return $val instanceof ExpressionInterface ? $val : '?'; - }, $val); + + foreach ($val as $col => $attr) { + if (!($attr instanceof ExpressionInterface)) { + $val[$col] = sprintf(':c%d', $placeholder); + $placeholder++; + } + } $select = array_combine($cols, $val); if ($k === 0) {