Commit 38234c61 authored by Taylor Otwell's avatar Taylor Otwell

Merge pull request #480 from cviebrock/schema-rename

Schema::rename('oldtable','newtable') support
parents c937f98b ef5ab30c
...@@ -40,6 +40,25 @@ class Schema { ...@@ -40,6 +40,25 @@ class Schema {
return static::execute($table); return static::execute($table);
} }
/**
* Rename a database table in the schema.
*
* @param string $table
* @param string $name
* @return void
*/
public static function rename($table, $new_name)
{
$table = new Schema\Table($table);
// To indicate that the table needs to be renamed, we will run the
// "rename" command on the table instance and pass the instance to
// the execute method as calling a Closure isn't needed.
$table->rename($new_name);
return static::execute($table);
}
/** /**
* Drop a database table from the schema. * Drop a database table from the schema.
* *
......
...@@ -212,6 +212,18 @@ class MySQL extends Grammar { ...@@ -212,6 +212,18 @@ class MySQL extends Grammar {
return 'ALTER TABLE '.$this->wrap($table)." ADD {$type} {$name}({$keys})"; return 'ALTER TABLE '.$this->wrap($table)." ADD {$type} {$name}({$keys})";
} }
/**
* Generate the SQL statement for a rename table command.
*
* @param Table $table
* @param Fluent $command
* @return string
*/
public function rename(Table $table, Fluent $command)
{
return 'RENAME TABLE '.$this->wrap($table).' TO '.$this->wrap($command->name);
}
/** /**
* Generate the SQL statement for a drop table command. * Generate the SQL statement for a drop table command.
* *
......
...@@ -198,6 +198,18 @@ class Postgres extends Grammar { ...@@ -198,6 +198,18 @@ class Postgres extends Grammar {
return $create." INDEX {$command->name} ON ".$this->wrap($table)." ({$columns})"; return $create." INDEX {$command->name} ON ".$this->wrap($table)." ({$columns})";
} }
/**
* Generate the SQL statement for a rename table command.
*
* @param Table $table
* @param Fluent $command
* @return string
*/
public function rename(Table $table, Fluent $command)
{
return 'ALTER TABLE '.$this->wrap($table).' RENAME TO '.$this->wrap($command->name);
}
/** /**
* Generate the SQL statement for a drop table command. * Generate the SQL statement for a drop table command.
* *
...@@ -302,7 +314,7 @@ class Postgres extends Grammar { ...@@ -302,7 +314,7 @@ class Postgres extends Grammar {
*/ */
public function drop_foreign(Table $table, Fluent $command) public function drop_foreign(Table $table, Fluent $command)
{ {
return $this->drop_constraint($table, $command); return $this->drop_constraint($table, $command);
} }
/** /**
......
...@@ -201,6 +201,18 @@ class SQLite extends Grammar { ...@@ -201,6 +201,18 @@ class SQLite extends Grammar {
return $create." INDEX {$command->name} ON ".$this->wrap($table)." ({$columns})"; return $create." INDEX {$command->name} ON ".$this->wrap($table)." ({$columns})";
} }
/**
* Generate the SQL statement for a rename table command.
*
* @param Table $table
* @param Fluent $command
* @return string
*/
public function rename(Table $table, Fluent $command)
{
return 'ALTER TABLE '.$this->wrap($table).' RENAME TO '.$this->wrap($command->name);
}
/** /**
* Generate the SQL statement for a drop table command. * Generate the SQL statement for a drop table command.
* *
......
...@@ -212,6 +212,18 @@ class SQLServer extends Grammar { ...@@ -212,6 +212,18 @@ class SQLServer extends Grammar {
return $create." INDEX {$command->name} ON ".$this->wrap($table)." ({$columns})"; return $create." INDEX {$command->name} ON ".$this->wrap($table)." ({$columns})";
} }
/**
* Generate the SQL statement for a rename table command.
*
* @param Table $table
* @param Fluent $command
* @return string
*/
public function rename(Table $table, Fluent $command)
{
return 'ALTER TABLE '.$this->wrap($table).' RENAME TO '.$this->wrap($command->name);
}
/** /**
* Generate the SQL statement for a drop table command. * Generate the SQL statement for a drop table command.
* *
...@@ -320,7 +332,7 @@ class SQLServer extends Grammar { ...@@ -320,7 +332,7 @@ class SQLServer extends Grammar {
*/ */
public function drop_foreign(Table $table, Fluent $command) public function drop_foreign(Table $table, Fluent $command)
{ {
return $this->drop_constraint($table, $command); return $this->drop_constraint($table, $command);
} }
/** /**
......
...@@ -144,6 +144,17 @@ class Table { ...@@ -144,6 +144,17 @@ class Table {
return $this->command($type, compact('name', 'columns')); return $this->command($type, compact('name', 'columns'));
} }
/**
* Rename the database table.
*
* @param string $name
* @return Fluent
*/
public function rename($name)
{
return $this->command(__FUNCTION__, compact('name'));
}
/** /**
* Drop the database table. * Drop the database table.
* *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment