62 $foreignKeysToTable = array();
64 foreach ( $toSchema->
getTables() AS $tableName => $table ) {
65 if ( !$fromSchema->
hasTable($tableName) ) {
66 $diff->newTables[$tableName] = $table;
68 $tableDifferences = $this->
diffTable( $fromSchema->
getTable($tableName), $table );
69 if ( $tableDifferences !==
false ) {
70 $diff->changedTables[$tableName] = $tableDifferences;
76 foreach ( $fromSchema->
getTables() AS $tableName => $table ) {
77 if ( !$toSchema->
hasTable($tableName) ) {
78 $diff->removedTables[$tableName] = $table;
82 foreach ($table->getForeignKeys() AS $foreignKey) {
83 $foreignTable = strtolower($foreignKey->getForeignTableName());
84 if (!isset($foreignKeysToTable[$foreignTable])) {
85 $foreignKeysToTable[$foreignTable] = array();
87 $foreignKeysToTable[$foreignTable][] = $foreignKey;
91 foreach ($diff->removedTables AS $tableName => $table) {
92 if (isset($foreignKeysToTable[$tableName])) {
93 $diff->orphanedForeignKeys = array_merge($diff->orphanedForeignKeys, $foreignKeysToTable[$tableName]);
97 foreach ( $toSchema->
getSequences() AS $sequenceName => $sequence) {
99 $diff->newSequences[] = $sequence;
102 $diff->changedSequences[] = $fromSchema->
getSequence($sequenceName);
107 foreach ($fromSchema->
getSequences() AS $sequenceName => $sequence) {
109 $diff->removedSequences[] = $sequence;
153 foreach ( $table2Columns as $columnName => $column ) {
154 if ( !$table1->
hasColumn($columnName) ) {
155 $tableDifferences->addedColumns[$columnName] = $column;
160 foreach ( $table1Columns as $columnName => $column ) {
161 if ( !$table2->
hasColumn($columnName) ) {
162 $tableDifferences->removedColumns[$columnName] = $column;
166 foreach ( $table1Columns as $columnName => $column ) {
169 if (count($changedProperties) ) {
170 $columnDiff =
new ColumnDiff($column->getName(), $table2->
getColumn($columnName), $changedProperties);
171 $tableDifferences->changedColumns[$column->getName()] = $columnDiff;
177 $this->detectColumnRenamings($tableDifferences);
182 foreach ($table2Indexes AS $index2Name => $index2Definition) {
183 foreach ($table1Indexes AS $index1Name => $index1Definition) {
184 if ($this->
diffIndex($index1Definition, $index2Definition) ===
false) {
185 unset($table1Indexes[$index1Name]);
186 unset($table2Indexes[$index2Name]);
188 if ($index1Name == $index2Name) {
189 $tableDifferences->changedIndexes[$index2Name] = $table2Indexes[$index2Name];
190 unset($table1Indexes[$index1Name]);
191 unset($table2Indexes[$index2Name]);
198 foreach ($table1Indexes AS $index1Name => $index1Definition) {
199 $tableDifferences->removedIndexes[$index1Name] = $index1Definition;
203 foreach ($table2Indexes AS $index2Name => $index2Definition) {
204 $tableDifferences->addedIndexes[$index2Name] = $index2Definition;
211 foreach ($fromFkeys AS $key1 => $constraint1) {
212 foreach ($toFkeys AS $key2 => $constraint2) {
214 unset($fromFkeys[$key1]);
215 unset($toFkeys[$key2]);
217 if (strtolower($constraint1->getName()) == strtolower($constraint2->getName())) {
218 $tableDifferences->changedForeignKeys[] = $constraint2;
220 unset($fromFkeys[$key1]);
221 unset($toFkeys[$key2]);
227 foreach ($fromFkeys AS $key1 => $constraint1) {
228 $tableDifferences->removedForeignKeys[] = $constraint1;
232 foreach ($toFkeys AS $key2 => $constraint2) {
233 $tableDifferences->addedForeignKeys[] = $constraint2;
237 return $changes ? $tableDifferences :
false;