Esempio n. 1
0
 private function createNewTable(Table $table, $tmpTableName)
 {
     if (is_null($this->adapter)) {
         throw new PhoenixException('Missing adapter');
     }
     $oldColumns = $this->adapter->tableInfo($table->getName());
     $columns = array_merge($oldColumns, $table->getColumnsToChange());
     $newTable = new Table($table->getName());
     $columnNames = [];
     foreach ($columns as $column) {
         $columnNames[] = $column->getName();
         if ($column->isAutoincrement()) {
             $newTable->addPrimary($column);
             continue;
         }
         $newTable->addColumn($column);
     }
     $queries = $this->createTable($newTable);
     $queries[] = 'INSERT INTO ' . $this->escapeString($newTable->getName()) . ' (' . implode(',', $this->escapeArray($columnNames)) . ') SELECT ' . implode(',', $this->escapeArray(array_keys($oldColumns))) . ' FROM ' . $this->escapeString($tmpTableName);
     return $queries;
 }
Esempio n. 2
0
 public function testColumns()
 {
     $table = new Table('test');
     $table->addPrimary(true);
     $this->assertInstanceOf('\\Phoenix\\Database\\Element\\Table', $table->addColumn(new Column('title', 'string')));
     $this->assertInstanceOf('\\Phoenix\\Database\\Element\\Table', $table->addColumn(new Column('total', 'int')));
     $this->assertCount(3, $table->getColumns());
     $this->assertInstanceOf('\\Phoenix\\Database\\Element\\Table', $table->changeColumn('title', new Column('new_title', 'string')));
     $this->assertCount(3, $table->getColumns());
     $this->assertCount(0, $table->getColumnsToChange());
     $this->assertInstanceOf('\\Phoenix\\Database\\Element\\Table', $table->changeColumn('alias', new Column('new_alias', 'string')));
     $this->assertCount(3, $table->getColumns());
     $this->assertCount(1, $table->getColumnsToChange());
     $this->assertCount(0, $table->getColumnsToDrop());
     $this->assertInstanceOf('\\Phoenix\\Database\\Element\\Table', $table->dropColumn('title'));
     $this->assertCount(3, $table->getColumns());
     $this->assertCount(1, $table->getColumnsToDrop());
 }