/**
* @inheritdoc
*/
public function insert($table, $columns, &$params)
{
$schema = $this->db->getSchema();
if (($tableSchema = $schema->getTableSchema($table)) !== null) {
$columnSchemas = $tableSchema->columns;
} else {
$columnSchemas = [];
}
//Empty insert
if (empty($columns) && !empty($columnSchemas)) {
$columns = [];
foreach ($columnSchemas as $columnSchema) {
if (!$columnSchema->autoIncrement) {
$columns[$columnSchema->name] = $columnSchema->defaultValue;
}
}
}
foreach ($columns as $name => $value) {
if ($value instanceof Expression) {
$columns[$name] = $this->convertExpression($value);
} elseif (isset($columnSchemas[$name]) && in_array($columnSchemas[$name]->type, [Schema::TYPE_TEXT, Schema::TYPE_BINARY])) {
$columns[$name] = [$value, \PDO::PARAM_LOB];
}
}
return parent::insert($table, $columns, $params);
}