/**
  */
 public function testDiff()
 {
     $column1 = DBColumn::fromSQL('id int');
     $column2 = DBColumn::fromSQL('id int');
     $column3 = DBColumn::fromSQL('num int');
     $column4 = DBColumn::fromSQL('name varchar(20)');
     $diff1 = $column1->diff($column2);
     $this->assertEquals('', $diff1);
     $diff2 = $column1->diff($column3);
     $this->assertEquals('CHANGE id num int', $diff2);
     $diff3 = $column1->diff($column4);
     $this->assertEquals('CHANGE id name varchar(20)', $diff3);
 }
Exemple #2
0
 /**
  * @param String $sql
  * @return DBTable
  */
 public static function fromSQL($sql)
 {
     if ($sql) {
         preg_match('/CREATE\\s+TABLE\\s+(\\w+)\\s*\\((.*)\\)/i', $sql, $match);
         $table = new static();
         $table->name = $match[1];
         $create_definitions = explode(',', $match[2]);
         foreach ($create_definitions as $definition) {
             $column = DBColumn::fromSQL($definition);
             $table->columns[$column->name] = $column;
         }
         return $table;
     } else {
         return null;
     }
 }