getCreateTableSQL($tableName); if ($row['pk'] !== 0 && $row['pk'] !== '0') { $pkColumnNamesByTable[$tableName][] = $row['name']; } } // ----- $foreignKeyRows = $this->connection->fetchAllAssociative( <<<'SQL' SELECT t.name AS table_name, p."from" AS column_name FROM sqlite_master t JOIN pragma_foreign_key_list(t.name) p WHERE t.type = 'table' SQL, ); foreach ($foreignKeyRows as $foreignKeyRow) { $foreignKeyColumnsByTable[$foreignKeyRow['table_name']] [$foreignKeyRow['column_name']] = true; } // ----- foreach ($rows as $row) { $tableName = $row['table_name']; $columnName = $row['name']; $tableSQL = $sqlByTable[$tableName]; $result[] = array_merge($row, [ // ----- 'autoincrement' => isset($pkColumnNamesByTable[$tableName]) && $pkColumnNamesByTable[$tableName] === [$columnName] && $row['type'] === 'INTEGER' && ! isset($foreignKeyColumnsByTable[$tableName][$columnName]), // ----- 'collation' => $this->parseColumnCollationFromSQL($columnName, $tableSQL), 'comment' => $this->parseColumnCommentFromSQL($columnName, $tableSQL), ]); } return $result; }