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');