Пример #1
0
 protected function SyncDatabase(IConnection $Connection, Relational\Database $Database, IDatabaseBuilder $Builder, IDatabaseModifier $Modifier)
 {
     $CurrentDatabase = $Builder->Build($Connection);
     $this->DropRelationalTraits($Connection, $Modifier, $CurrentDatabase);
     $Tables = $Database->GetTables();
     $CurrentTables = $CurrentDatabase->GetTables();
     if (!$this->IdentifiersAreCaseSensitive) {
         $Tables = array_change_key_case($Tables);
         $CurrentTables = array_change_key_case($CurrentTables);
     }
     foreach ($Tables as $TableName => $Table) {
         $this->SyncTable($Connection, $Modifier, $Table, isset($CurrentTables[$TableName]) ? $CurrentTables[$TableName] : null);
     }
     foreach ($CurrentDatabase->GetTables() as $TableName => $CurrentTable) {
         if (!isset($CurrentTables[$TableName])) {
             $this->SyncTable($Connection, $Modifier, null, $CurrentTable);
         }
     }
     $this->AddRelationalTraits($Connection, $Modifier, $Database);
 }