/** * Compares two sets of metadata of table columns and returns a set of metadata of table columns that are in the first * sets of metadata of table columns but not in the second sets of metadata of table columns. * * @param TableColumnsMetadata $columns1 The first sets of metadata of table columns. * @param TableColumnsMetadata $columns2 The second sets of metadata of table columns. * * @return TableColumnsMetadata */ public static function notInOtherSet($columns1, $columns2) { $diff = new TableColumnsMetadata(); foreach ($columns1->columns as $column_name => $column1) { if (!isset($columns2->columns[$column_name])) { $diff->appendTableColumn($column1); } } return $diff; }
/** * Returns metadata of new table columns that can be used in a 'alter table .. add column' statement. * * @param TableColumnsMetadata $newColumns The metadata new table columns. * * @return TableColumnsMetadata */ private function alterNewColumns($newColumns) { $alterNewColumns = new TableColumnsMetadata(); foreach ($newColumns->getColumns() as $newColumn) { $properties = $newColumn->getProperties(); $properties['after'] = $this->dataTableColumnsDatabase->getPreviousColumn($properties['column_name']); $alterNewColumns->appendTableColumn(new AlterColumnMetadata($properties)); } return $alterNewColumns; }