public function testDefaultConstruct() { $table = new Table('test'); $table->addPrimary(true); $this->assertEquals('test', $table->getName()); $columns = $table->getColumns(); $this->assertCount(1, $columns); foreach ($columns as $column) { $this->assertInstanceOf('\\Phoenix\\Database\\Element\\Column', $column); } $idColumn = $table->getColumn('id'); $this->assertInstanceOf('\\Phoenix\\Database\\Element\\Column', $idColumn); $this->assertEquals('id', $idColumn->getName()); $this->assertEquals('integer', $idColumn->getType()); $this->assertFalse($idColumn->allowNull()); $this->assertNull($idColumn->getDefault()); $this->assertTrue($idColumn->isSigned()); $this->assertNull($idColumn->getLength()); $this->assertNull($idColumn->getDecimals()); $this->assertTrue($idColumn->isAutoincrement()); $primaryColumns = $table->getPrimaryColumns(); $this->assertCount(1, $primaryColumns); foreach ($primaryColumns as $primaryColumn) { $this->assertTrue(is_string($primaryColumn)); } }
private function createIndexName($columns, $name = null) { if ($name) { return $name; } if (!is_array($columns)) { $columns = [$columns]; } return 'idx_' . $this->table->getName() . '_' . implode('_', $columns); }
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; }
/** * generates rename table queries for mysql * @param Table $table * @param string $newTableName * @return array list of queries */ public function renameTable(Table $table, $newTableName) { return ['RENAME TABLE ' . $this->escapeString($table->getName()) . ' TO ' . $this->escapeString($newTableName) . ';']; }
protected function dropKeyQuery(Table $table, $key) { return 'ALTER TABLE ' . $this->escapeString($table->getName()) . ' DROP ' . $key . ';'; }
protected function createEnumSetColumn(Column $column, Table $table) { return sprintf($this->remapType($column), $table->getName(), $column->getName()); }