Beispiel #1
0
 /**
  * @param Database $fromDatabase
  * @param Database $toDatabase
  * @param array $ignoreList
  *
  * @return DatabaseDiff
  */
 public function diffDatabases(Database $fromDatabase, Database $toDatabase, array $ignoreList = [])
 {
     $databaseDiff = new DatabaseDiff();
     foreach ($fromDatabase->getTables() as $fromTable) {
         if ($this->isTableIgnored($fromTable->getName(), $ignoreList)) {
             continue;
         }
         if (!$toDatabase->hasTable($fromTable->getName())) {
             $databaseDiff->addDeletedTable($fromTable);
             continue;
         }
         $toTable = $toDatabase->getTableByName($fromTable->getName());
         if ($fromTable->generateCreationScript(true) != $toTable->generateCreationScript(true)) {
             $changedTable = new ChangedTable($fromTable, $toTable);
             $this->diffChangedTable($changedTable);
             $databaseDiff->addChangedTable($changedTable);
         }
     }
     foreach ($toDatabase->getTables() as $toTable) {
         if ($this->isTableIgnored($toTable->getName(), $ignoreList)) {
             continue;
         }
         if (!$fromDatabase->hasTable($toTable->getName())) {
             $databaseDiff->addNewTable($toTable);
         }
     }
     return $databaseDiff;
 }