/** * Creates the table. * * @param string $name the table name */ private function createTable($name) { $table = new Table($name); $table->addField(new Field('id', new Type(Field::TYPE_VARCHAR, 32), '', false, false)); $table->addField(new Field('username', new Type(Field::TYPE_VARCHAR, 255), null, true, false)); $table->addField(new Field('fullName', Field::TYPE_TEXT, null, true, false)); $table->addField(new Field('email', new Type(Field::TYPE_VARCHAR, 255), null, true, false)); $table->addField(new Field('birthdate', Field::TYPE_DATE, null, true, false)); $table->addField(new Field('gender', new Type(Field::TYPE_VARCHAR, 255), '', true, false)); $table->addField(new Field('timezoneOffset', new Type(Field::TYPE_SMALLINT, 4), 0, false, false)); $table->addField(new Field('locale', new Type(Field::TYPE_VARCHAR, 10), 'en-US', false, false)); $table->addField(new Field('lastLogin', new Type(Field::TYPE_INT, 12), -1, false, false)); $table->addField(new Field('secret', Field::TYPE_TEXT, '', false, false)); $table->setPrimaryKey(new PrimaryKey($name, array('id'))); $table->addIndex(new Index('username', $name, true, array('username'))); $table->addIndex(new Index('email', $name, true, array('email'))); $this->db->createTable($table); }
/** * Creates the table. */ private function createTable() { $table = new Table($this->table); $table->addField(new Field('role', new Type(Field::TYPE_VARCHAR, 255), '', false, false)); $table->addField(new Field('page', new Type(Field::TYPE_VARCHAR, 255), '', false, false)); $table->addField(new Field('task', new Type(Field::TYPE_VARCHAR, 255), '', false, false)); $table->setPrimaryKey(new PrimaryKey($this->table, array('role', 'page', 'task'))); $this->db->createTable($table); }
/** * Returns the table skeleton. * * This is the basic table with ID, GID and parent fields. * * @return Table the table skeleton */ protected function getTableSkeleton() { $table = new Table($this->tableName, ''); $table->addField(new Field('id', new Type(Field::TYPE_INT, 20), '', false, true, 'The local ID')); $table->addField(new Field('gid', new Type(Field::TYPE_VARCHAR, 32), '-1', false, false, 'The global ID (GID)')); $table->addField(new Field('parent', new Type(Field::TYPE_VARCHAR, 32), '-1', false, false, 'The parent GID')); $table->setPrimaryKey(new PrimaryKey($this->tableName, array('id'))); $table->addIndex(new Index('gid', $this->tableName, true, array('gid'))); $table->addIndex(new Index('parent', $this->tableName, false, array('parent'))); return $table; }
public function setUpTable(Table $table) { $table->addField(new Field('name', new Type(Field::TYPE_VARCHAR, 255))); $table->addField(new Field('length', Field::TYPE_INT)); return $table; }
/** * Creates the table. * * @param string $name the table name */ private function createTable($name) { $table = new Table($name); $table->addField(new Field('idx', Field::TYPE_INT, '', false, true)); $table->addField(new Field('id', new Type(Field::TYPE_VARCHAR, 32), '', false, false)); $table->addField(new Field('role', Field::TYPE_TEXT, '', false, false)); $table->setPrimaryKey(new PrimaryKey($name, array('idx'))); $this->db->createTable($table); }
/** * Creates the table. * * @param string $name the table name */ private function createTable() { $name = $this->table; $table = new Table($name, ''); $table->addField(new Field('idx', new Type(Field::TYPE_VARCHAR, 255), '', false, false)); $table->addField(new Field('data', new Type(Field::TYPE_BLOB), '', false, false)); if ($this->useTimestamps) { $table->addField(new Field('ts', new Type(Field::TYPE_INT, 10), '', false, false)); } $table->setPrimaryKey(new PrimaryKey($name, array('idx'))); $this->db->createTable($table); }
public function createTable(Table $table) { $createDefinition = array(); $fields = $table->getFields(); if (empty($fields)) { throw new SQLException('A table must have at least one field'); } foreach ($fields as $field) { $createDefinition[] = $this->buildColumnDefinition($field); } $primary = $table->getPrimaryKey(); if ($primary != null) { $createDefinition[] = $this->buildPrimaryKeyDefinition($primary); } $indices = $table->getIndices(); foreach ($indices as $index) { $createDefinition[] = $this->buildIndexDefinition($index); } $foreignKeys = $table->getForeignKeys(); foreach ($foreignKeys as $foreignKey) { $createDefinition[] = $this->buildForeignKeyDefinition($foreignKey); } $query = 'CREATE TABLE ' . $this->addPrefix($table->getName()) . "(\n"; $query .= implode(",\n", $createDefinition) . "\n)"; $query .= " ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $comment = $table->getComment(); if (strlen($comment) > 0) { $query .= ' COMMENT=' . $this->pdoDriver->escapeString($comment); } $query .= ';'; $this->pdoDriver->executeQuery($query, null, false); }
/** * Tests getting the last insert ID. * * @depends testCreateTable * @covers empire\framework\db\DB::lastInsertID * * @param DB[] $dbs the database objects to work on */ public function testLastInsertID($dbs) { foreach ($dbs as $db) { /* @var $db DB */ $table = new Table('tlastinsert'); $table->addField(new Field('flastinsert', Field::TYPE_INT, '', false, true)); $table->addField(new Field('ftest', new Type(Field::TYPE_VARCHAR, 10))); $table->setPrimaryKey(new PrimaryKey('flastinsert', array('flastinsert'))); if ($db->tableExists($table->getName())) { $db->dropTable($table->getName()); } $db->createTable($table); $bindings = array(':::table' => 'tlastinsert', ':value' => 'hello'); for ($i = 1; $i <= 100; $i++) { $db->execute('INSERT INTO :::table (ftest) VALUES(:value)', $bindings); $this->assertSame($i, $db->lastInsertID()); } $db->dropTable($table->getName()); } }