Modifying tables
Learn how to alter existing tables
Alter tables
You can alter an existing table by using the alter method.
Opis\Database\Schema\AlterTable;
$db->schema()->alter('users', function(AlterTable $table){
//code
});
Adding columns
Adding a new column to an existing table is done in a similar way described in the Creating tables section. The only difference is that you won’t be able to directly add a constraint or an index.
$db->schema()->alter('users', function($table){
$table->integer('age')->size('small')->unsigned();
});
Deleting columns
You can delete a column by using the dropColumn method.
The method accepts a single argument representing the column’s name.
$db->schema()->alter('users', function($table){
$table->dropColumn('age');
});
Renaming columns
Renaming a column is done using the renameColumn method.
This method takes as arguments the current and the new name of the column.
$db->schema()->alter('users', function($table){
$table->renameColumn('name', 'username');
});
Adding default values
You can add a default value for a column by using the setDefaultValue method.
This method takes as arguments the name of the column and the default value for that column.
$db->schema()->alter('users', function($table){
$table->setDefaultValue('age', 18);
});
Removing default values
You can remove a column’s default value by using the dropDefaultValue method.
This method takes as an argument the name of the column.
$db->schema()->alter('users', function($table){
$table->dropDefaultValue('age');
});
Add primary key
You may add the primary key by calling the primary method.
$db->schema()->alter('users', function($table){
$table->primary('age');
});
Delete primary key
Dropping a primary key is done by using the dropPrimary method.
This method takes a single argument representing the name of the primary key.
$db->schema()->alter('users', function($table){
$table->dropPrimary('id');
});
Add unique keys
You may add a unique key by calling the unique method.
$db->schema()->alter('users', function($table){
$table->unique('email');
});
Delete unique keys
Dropping a unique key is done by using the dropUnique method.
This method takes a single argument representing the name of the unique key you want to delete.
$db->schema()->alter('users', function($table){
$table->dropUnique('email');
});
Add foreign keys
You may add a foreign key by using the foreign method.
$db->schema()->alter('users', function($table){
$table->foreign('profile_id')->references('profiles', 'id');
});
Delete foreign keys
Dropping a foreign key is done by using the dropForeign method.
This method takes a single argument representing the name of the foreign key you want to delete.
$db->schema()->alter('users', function($table){
$table->dropForeign('fk_profile');
});
Add indexes
You can add an index by calling the index method.
$db->schema()->alter('users', function($table){
$table->index('username');
});
Delete indexes
Dropping an index is done by using the dropIndex method.
This method takes a single argument representing the name of the index you want to remove.
$db->schema()->alter('users', function($table){
$table->dropIndex('username');
});
Changing a column’s type
When a table is altered you may change the types of its columns by using the following methods:
toInteger, toFloat, toDouble, toDecimal, toBoolean, toBinary, toString,
toFixed, toText, toTime, toTimestamp, toDate, toDateTime.
$db->schema()->alter('users', function($table){
$table->toDouble('height');
});
Truncate tables
You may use the truncate method if you want to remove all rows from a table.
$db->schema()->truncate('users');
Rename tables
Renaming a table is done by using the renameTable method.
This method takes as arguments the current name of the table and the new name for that table.
//Rename table `user` to `users`
$db->schema()->renameTable('user', 'users');
Drop tables
You may use the drop method if you want to delete a table.
$db->schema()->drop('users');