Example #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;
 }
Example #2
0
 /**
  * @param string $sqlScript
  *
  * @return Database
  */
 public function parseDatabase($sqlScript)
 {
     $database = new Database();
     $tables = $this->parseTables($sqlScript);
     foreach ($tables as $table) {
         $this->parseTableDefinition($table);
         $database->addTable($table);
     }
     return $database;
 }