Example #1
0
File: Table.php Project: rj28/test
 public function diff(Table $oldTable)
 {
     $ret = [];
     $old = $oldTable->columns;
     $new = $this->columns;
     if ($this->engine != $oldTable->engine) {
         $ret[] = "ALTER TABLE `{$this->name}` ENGINE = {$this->engine};";
     }
     foreach ($new as $name => $column) {
         if (isset($old[$name])) {
             $str = $column->getQueryAdd();
             if ($str != $old[$name]->getQueryAdd()) {
                 $ret[] = $column->getQueryChange();
             }
         } else {
             if (!isset($old[$name])) {
                 $ret[] = $column->getQueryAdd();
             }
         }
     }
     $old = $oldTable->getKeys();
     $new = $this->getKeys();
     foreach ($old as $key => $entries) {
         if (!isset($new[$key])) {
             $ret[] = "ALTER TABLE `{$this->name}` DROP INDEX `{$key}`;";
         }
     }
     foreach ($new as $key => $group) {
         if (isset($old[$key])) {
             $str = $group->getQueryAdd();
             if ($str != $old[$key]->getQueryAdd()) {
                 $ret[] = $group->getQueryDrop();
                 $ret[] = $group->getQueryAdd();
             }
         } else {
             $ret[] = $group->getQueryAdd();
         }
     }
     $ret = trim(implode("\n", $ret));
     return $ret ? $ret . "\n" : '';
 }