/** * Insert the given field. * * @param PropertyField $field The new ID field. * @param IdProperty $prop The new ID property. * @return self */ private function insertNewField(PropertyField $field, IdProperty $prop) { unset($prop); $model = $this->targetModel(); $source = $model->source(); $extra = $field->extra(); $field->setExtra(''); // Don't alter table if column name already exists. $sql = strtr('SHOW COLUMNS FROM `%table` LIKE "%key"', ['%table' => $source->table(), '%key' => $field->ident()]); $res = $source->db()->query($sql); if ($res->fetch(1)) { // Column name already exists. return $this; } $sql = strtr('ALTER TABLE `%table` ADD COLUMN %field FIRST;', ['%table' => $source->table(), '%field' => $field->sql()]); $field->setExtra($extra); $source->db()->query($sql); return $this; }