/** * Compares database * * @param Database $database * * @return array * @throws \Exception */ public function equals(Database $database) { $prefix = ''; $thisTables = $this->getTables(); $databaseTables = $database->getTables(); $errors = []; foreach ($thisTables as $database) { if (array_key_exists($database->getName(), $databaseTables)) { $errors = array_merge($errors, $database->equals($databaseTables[$database->getName()], $prefix)); } } $thisTableNames = array_keys($thisTables); $databaseTableNames = array_keys($databaseTables); $diff = array_diff($databaseTableNames, $thisTableNames); if (!empty($diff)) { $errors[] = $prefix . 'Extra Tables: ' . "\n" . implode("\n", $diff); } $diff = array_diff($thisTableNames, $databaseTableNames); if (!empty($diff)) { $errors[] = $prefix . 'Missing Tables: ' . "\n" . implode("\n", $diff); } return $errors; }