Баг в batchInsert с json полем
Добавлено: 2018.03.27, 10:48
Здравствуйте!
Столкнулся со следующей проблемой:
БД - постгрес
Есть табличка с json полем
Если в миграции делать
То все нормально
А если делать
то случается
Случается это потому что в
yii\db\Command -> batchInsert
делается
в следствии чего $table становится равным '"table"' и поэтому при поиске колонок в бд ничего не находится и следовательно потом схема не знает что поле 'jsonField' нужно обернуть
Кстати
делается посже в queryBuilder->batchInsert
Полечил я это
Столкнулся со следующей проблемой:
БД - постгрес
Есть табличка с json полем
Если в миграции делать
Код: Выделить всё
$this->insert('{{%table}}', [
'jsonField' => [
1, 2, 3, 4, 5
],
]);
А если делать
Код: Выделить всё
$this->batchInsert('{{%table}}', [
'jsonField' => [
1, 2, 3, 4, 5
],
],[
'jsonField' => [
7, 8, 9, 10
],
]);
Код: Выделить всё
> insert into {{%table}} ...Exception: Array to string conversion (/code/vendor/yiisoft/yii2/db/pgsql/QueryBuilder.php:467)
#0 /code/vendor/yiisoft/yii2/db/Command.php(504): yii\db\pgsql\QueryBuilder->batchInsert()
#1 /code/vendor/yiisoft/yii2/db/Migration.php(246): yii\db\Command->batchInsert()
yii\db\Command -> batchInsert
делается
Код: Выделить всё
$table = $this->db->quoteSql($table);
$columns = array_map(function ($column) {
return $this->db->quoteSql($column);
}, $columns);
Кстати
Код: Выделить всё
$table = $this->db->quoteSql($table);
Код: Выделить всё
foreach ($columns as $i => $name) {
$columns[$i] = $schema->quoteColumnName($name);
}
return 'INSERT INTO ' . $schema->quoteTableName($table)
. ' (' . implode(', ', $columns) . ') VALUES ' . implode(', ', $values);
Код: Выделить всё
$this->batchInsert($this->db->getSchema()->getRawTableName('{{%table}}'),