public function compareTables($caseInsensitive = false)
    {
        $fromDatabaseTables = $this->fromDatabase->getTables();
        $toDatabaseTables = $this->toDatabase->getTables();
        $databaseDifferences = 0;

        // check for new tables in $toDatabase
        foreach ($toDatabaseTables as $table) {
            if ($this->isTableExcluded($table)) {
                continue;
            }
            if (!$this->fromDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
                $this->databaseDiff->addAddedTable($table->getName(), $table);
                $databaseDifferences++;
            }
        }

        // check for removed tables in $toDatabase
        if ($this->getRemoveTable()) {
            foreach ($fromDatabaseTables as $table) {
                if ($this->isTableExcluded($table)) {
                    continue;
                }
                if (!$this->toDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
                    $this->databaseDiff->addRemovedTable($table->getName(), $table);
                    $databaseDifferences++;
                }
            }
        }

        // check for table differences
        foreach ($fromDatabaseTables as $fromTable) {
            if ($this->isTableExcluded($fromTable)) {
                continue;
            }
            if ($this->toDatabase->hasTable($fromTable->getName(), $caseInsensitive)) {
                $toTable = $this->toDatabase->getTable($fromTable->getName(), $caseInsensitive);
                $databaseDiff = TableComparator::computeDiff($fromTable, $toTable, $caseInsensitive);
                if ($databaseDiff) {
                    $this->databaseDiff->addModifiedTable($fromTable->getName(), $databaseDiff);
                    $databaseDifferences++;
                }
            }
        }

        // check for table renamings
        foreach ($this->databaseDiff->getAddedTables() as $addedTableName => $addedTable) {
            foreach ($this->databaseDiff->getRemovedTables() as $removedTableName => $removedTable) {
                if (!TableComparator::computeDiff($addedTable, $removedTable, $caseInsensitive)) {
                    // no difference except the name, that's probably a renaming
                    if ($this->getWithRenaming()) {
                        $this->databaseDiff->addRenamedTable($removedTableName, $addedTableName);
                        $this->databaseDiff->removeAddedTable($addedTableName);
                        $this->databaseDiff->removeRemovedTable($removedTableName);
                        $databaseDifferences--;
                    } else {
                        $this->databaseDiff->addPossibleRenamedTable($removedTableName, $addedTableName);
                    }
                    // skip to the next added table
                    break;
                }
            }
        }

        return $databaseDifferences;
    }
public function compareTables($caseInsensitive = false)
    {
        $fromDatabaseTables = $this->fromDatabase->getTables();
        $toDatabaseTables = $this->toDatabase->getTables();
        $databaseDifferences = 0;

        // check for new tables in $toDatabase
        foreach ($toDatabaseTables as $table) {
            if ($this->isTableExcluded($table)) {
                continue;
            }
            if (!$this->fromDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
                $this->databaseDiff->addAddedTable($table->getName(), $table);
                $databaseDifferences++;
            }
        }

        // check for removed tables in $toDatabase
        if ($this->getRemoveTable()) {
            foreach ($fromDatabaseTables as $table) {
                if ($this->isTableExcluded($table)) {
                    continue;
                }
                if (!$this->toDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
                    $this->databaseDiff->addRemovedTable($table->getName(), $table);
                    $databaseDifferences++;
                }
            }
        }

        // check for table differences
        foreach ($fromDatabaseTables as $fromTable) {
            if ($this->isTableExcluded($fromTable)) {
                continue;
            }
            if ($this->toDatabase->hasTable($fromTable->getName(), $caseInsensitive)) {
                $toTable = $this->toDatabase->getTable($fromTable->getName(), $caseInsensitive);
                $databaseDiff = TableComparator::computeDiff($fromTable, $toTable, $caseInsensitive);
                if ($databaseDiff) {
                    $this->databaseDiff->addModifiedTable($fromTable->getName(), $databaseDiff);
                    $databaseDifferences++;
                }
            }
        }

        // check for table renamings
        foreach ($this->databaseDiff->getAddedTables() as $addedTableName => $addedTable) {
            foreach ($this->databaseDiff->getRemovedTables() as $removedTableName => $removedTable) {
                if (!TableComparator::computeDiff($addedTable, $removedTable, $caseInsensitive)) {
                    // no difference except the name, that's probably a renaming
                    if ($this->getWithRenaming()) {
                        $this->databaseDiff->addRenamedTable($removedTableName, $addedTableName);
                        $this->databaseDiff->removeAddedTable($addedTableName);
                        $this->databaseDiff->removeRemovedTable($removedTableName);
                        $databaseDifferences--;
                    } else {
                        $this->databaseDiff->addPossibleRenamedTable($removedTableName, $addedTableName);
                    }
                    // skip to the next added table
                    break;
                }
            }
        }

        return $databaseDifferences;
    }
public function compareTables ( $ caseInsensitive = false ) { $ fromDatabaseTables = $ this -> fromDatabase -> getTables ( ) ; $ toDatabaseTables = $ this -> toDatabase -> getTables ( ) ; $ databaseDifferences = 0 ; // check for new tables in $toDatabase foreach ( $ toDatabaseTables as $ table ) { if ( $ this -> isTableExcluded ( $ table ) ) { continue ; } if ( ! $ this -> fromDatabase -> hasTable ( $ table -> getName ( ) , $ caseInsensitive ) && ! $ table -> isSkipSql ( ) ) { $ this -> databaseDiff -> addAddedTable ( $ table -> getName ( ) , $ table ) ; $ databaseDifferences ++ ; } } // check for removed tables in $toDatabase if ( $ this -> getRemoveTable ( ) ) { foreach ( $ fromDatabaseTables as $ table ) { if ( $ this -> isTableExcluded ( $ table ) ) { continue ; } if ( ! $ this -> toDatabase -> hasTable ( $ table -> getName ( ) , $ caseInsensitive ) && ! $ table -> isSkipSql ( ) ) { $ this -> databaseDiff -> addRemovedTable ( $ table -> getName ( ) , $ table ) ; $ databaseDifferences ++ ; } } } // check for table differences foreach ( $ fromDatabaseTables as $ fromTable ) { if ( $ this -> isTableExcluded ( $ fromTable ) ) { continue ; } if ( $ this -> toDatabase -> hasTable ( $ fromTable -> getName ( ) , $ caseInsensitive ) ) { $ toTable = $ this -> toDatabase -> getTable ( $ fromTable -> getName ( ) , $ caseInsensitive ) ; $ databaseDiff = TableComparator :: computeDiff ( $ fromTable , $ toTable , $ caseInsensitive ) ; if ( $ databaseDiff ) { $ this -> databaseDiff -> addModifiedTable ( $ fromTable -> getName ( ) , $ databaseDiff ) ; $ databaseDifferences ++ ; } } } // check for table renamings foreach ( $ this -> databaseDiff -> getAddedTables ( ) as $ addedTableName => $ addedTable ) { foreach ( $ this -> databaseDiff -> getRemovedTables ( ) as $ removedTableName => $ removedTable ) { if ( ! TableComparator :: computeDiff ( $ addedTable , $ removedTable , $ caseInsensitive ) ) { // no difference except the name, that's probably a renaming if ( $ this -> getWithRenaming ( ) ) { $ this -> databaseDiff -> addRenamedTable ( $ removedTableName , $ addedTableName ) ; $ this -> databaseDiff -> removeAddedTable ( $ addedTableName ) ; $ this -> databaseDiff -> removeRemovedTable ( $ removedTableName ) ; $ databaseDifferences -- ; } else { $ this -> databaseDiff -> addPossibleRenamedTable ( $ removedTableName , $ addedTableName ) ; } // skip to the next added table break ; } } } return $ databaseDifferences ; }
Returns the number of differences.

Compares the tables of the fromDatabase and the toDatabase, and modifies
the inner databaseDiff if necessary.

@param  boolean $caseInsensitive
@return integer
Returns the number of differences .