/** */ 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); }
/** * @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; } }