laravel的migrate是个不错的工具,可以实现数据库模型的版本控制,今天遇到一个问题,就是数据库的某些字段需要修改,使用migrate进行重命名。
以users表的username字段为例,重命名为name
首先生成migrate文件:
php artisan make:migration rename_name_column_to_users --table=users
然后,打开生成的文件,分别在up和down方法中添加相关逻辑代码,下面是添加后的代码
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('username','name');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('name','username');
});
}
然后安装所需依赖
composer require "doctrine/dbal"
这一步很重要,如果不安装就无法执行,会报如下错误
[Symfony\Component\Debug\Exception\FatalErrorException]
Cannot redeclare class RenameNameColumnToUsers
依赖安装完成后执行命令:
php artisan migrate
命令执行完毕之后数据库users表的username字段就会被替换成name
参考资料:http://laravel.com/docs/4.2/schema