Example #1
0
 /**
  * @param Database $toCheck
  * @param Table $missing
  * @param Database $from
  * @return array
  */
 protected function crossCheckDependencies(Database $toCheck, Table $missing, Database $from)
 {
     $renameCandidates = [];
     $possibleDrops = [];
     foreach ($toCheck as $name => $table) {
         if (!$from->hasTable($name)) {
             $possibleDrops[$name] = $table;
         }
     }
     $depString = $missing->getSortedDependencyString();
     /** @var Table $table */
     foreach ($possibleDrops as $name => $table) {
         if ($depString == $table->getSortedDependencyString()) {
             $renameCandidates[$name] = $table;
         } else {
             //X-check existing FK's
             /** @var ForeignKey $fk */
             foreach ($table->getConstraints() as $fkName => $fk) {
                 $missingFk = $missing->getConstraintByName($fkName);
                 if ($missingFk && $missingFk->getReferences() === $fk->getReferences()) {
                     $renameCandidates[$name] = ['table' => $table, 'similarity' => $table->getSimilarityPercentage($missing)];
                 }
             }
         }
     }
     return $renameCandidates;
 }