/** * {@inheritdoc} */ protected function _getPortableTableColumnList($table, $database, $tableColumns) { $list = parent::_getPortableTableColumnList($table, $database, $tableColumns); // find column with autoincrement $autoincrementColumn = null; $autoincrementCount = 0; foreach ($tableColumns as $tableColumn) { if ('0' != $tableColumn['pk']) { $autoincrementCount++; if (null === $autoincrementColumn && 'integer' == strtolower($tableColumn['type'])) { $autoincrementColumn = $tableColumn['name']; } } } if (1 == $autoincrementCount && null !== $autoincrementColumn) { foreach ($list as $column) { if ($autoincrementColumn == $column->getName()) { $column->setAutoincrement(true); } } } // inspect column collation $createSql = $this->_conn->fetchAll("SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE type = 'table' AND name = '{$table}'"); $createSql = isset($createSql[0]['sql']) ? $createSql[0]['sql'] : ''; foreach ($list as $columnName => $column) { $type = $column->getType(); if ($type instanceof StringType || $type instanceof TextType) { $column->setPlatformOption('collation', $this->parseColumnCollationFromSQL($columnName, $createSql) ?: 'BINARY'); } } return $list; }
/** * {@inheritdoc} */ protected function _getPortableTableColumnList($table, $database, $tableColumns) { $list = parent::_getPortableTableColumnList($table, $database, $tableColumns); $autoincrementColumn = null; $autoincrementCount = 0; foreach ($tableColumns as $tableColumn) { if ('0' != $tableColumn['pk']) { $autoincrementCount++; if (null === $autoincrementColumn && 'integer' == strtolower($tableColumn['type'])) { $autoincrementColumn = $tableColumn['name']; } } } if (1 == $autoincrementCount && null !== $autoincrementColumn) { foreach ($list as $column) { if ($autoincrementColumn == $column->getName()) { $column->setAutoincrement(true); } } } return $list; }