/** * Adds a new column to the table. * * @param Column|array $col * @throws EngineException * @return Column */ public function addColumn($col) { if ($col instanceof Column) { if (isset($this->columnsByName[$col->getName()])) { throw new EngineException(sprintf('Column "%s" declared twice in table "%s"', $col->getName(), $this->getName())); } $col->setTable($this); if ($col->isInheritance()) { $this->inheritanceColumn = $col; } $this->columns[] = $col; $this->columnsByName[$col->getName()] = $col; $this->columnsByLowercaseName[strtolower($col->getName())] = $col; $this->columnsByPhpName[$col->getPhpName()] = $col; $col->setPosition(count($this->columns)); if ($col->requiresTransactionInPostgres()) { $this->needsTransactionInPostgres = true; } return $col; } $column = new Column(); $column->setTable($this); $column->loadMapping($col); return $this->addColumn($column); // call self w/ different param }
public function testSetupObjectWithDomain() { $database = $this->getDatabaseMock('bookstore'); $database->expects($this->once())->method('getDomain')->with($this->equalTo('BOOLEAN'))->will($this->returnValue($this->getDomainMock('INTEGER'))); $table = $this->getTableMock('books', array('database' => $database)); $column = new Column(); $column->setTable($table); $column->setDomain($this->getDomainMock('BOOLEAN')); $column->loadMapping(array('domain' => 'BOOLEAN', 'name' => 'is_published', 'phpName' => 'IsPublished', 'phpType' => 'boolean', 'tableMapName' => 'IS_PUBLISHED', 'prefix' => 'col_', 'accessorVisibility' => 'public', 'mutatorVisibility' => 'public', 'primaryString' => 'false', 'primaryKey' => 'false', 'nodeKey' => 'false', 'nestedSetLeftKey' => 'false', 'nestedSetRightKey' => 'false', 'treeScopeKey' => 'false', 'required' => 'false', 'autoIncrement' => 'false', 'lazyLoad' => 'true', 'sqlType' => 'TINYINT', 'size' => 1, 'defaultValue' => 'true', 'valueSet' => 'FOO, BAR, BAZ')); $this->assertSame('is_published', $column->getName()); $this->assertSame('IsPublished', $column->getPhpName()); $this->assertSame('boolean', $column->getPhpType()); $this->assertSame('IS_PUBLISHED', $column->getTableMapName()); $this->assertSame('public', $column->getAccessorVisibility()); $this->assertSame('public', $column->getMutatorVisibility()); $this->assertFalse($column->isPrimaryString()); $this->assertFalse($column->isPrimaryKey()); $this->assertFalse($column->isNodeKey()); $this->assertFalse($column->isNestedSetLeftKey()); $this->assertFalse($column->isNestedSetRightKey()); $this->assertFalse($column->isTreeScopeKey()); $this->assertTrue($column->isLazyLoad()); $this->assertCount(3, $column->getValueSet()); }