Пример #1
0
 /**
  * {@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;
 }