/** * Add a column to the table. * * @param IColumn $Column The column to add * @throws InvalidColumnException If the column belongs to another table */ private function AddColumn(IColumn $Column) { if ($Column->HasTable()) { if (!$Column->GetTable()->Is($this)) { throw new InvalidColumnException('The registered column %s is already registered with another table %s.', $Column->GetName(), $Column->GetTable()->GetName()); } } $Column->SetTable($this); $ColumnName = $Column->GetName(); $ColumnIdentifier = $Column->GetIdentifier(); $this->Columns[$ColumnName] = $Column; $this->ColumnsByIdentifiers[$ColumnIdentifier] = $Column; if ($Column->IsPrimaryKey()) { $this->PrimaryKeyColumns[$ColumnName] = $Column; $this->PrimaryKeyColumnByIdentifiers[$ColumnIdentifier] = $Column; } }