数据库 – 如何使用Laravel架构构建器更改列类型?
发布时间:2020-05-23 07:38:16 所属栏目:MsSql 来源:互联网
导读:我需要从整数更改为外键两个字段.如何建立我的迁移这样做? Schema::create(messages, function($table){ $table-increments(id); $table-integer(sender); $table-integer(recipient); $table-string(title);
|
我需要从整数更改为外键两个字段.如何建立我的迁移这样做? Schema::create('messages',function($table)
{
$table->increments('id');
$table->integer('sender');
$table->integer('recipient');
$table->string('title');
$table->longtext('body');
$table->timestamps();
$table->softDeletes();
$table->integer('regarding');
});
我将发件人更改为sender_id,收件人更改为recipient_id,并将关于_id. 解决方法我遇到了类似的问题,需要将列类型从字符串更改为整数.我使用两个单独的迁移(每个都有一个RAW sql语句)来管理它来获取解决方案.此外,与Postgres和MySQL一起工作,因为我们正在转移中. 第一次迁移: /**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('plans',function(Blueprint $table)
{
//
$table->mediumInteger('duration_change_type')->default(0)->after('duration');
});
if (Config::get('database')['default'] === 'mysql'){
// Mysql
DB::statement('update plans set duration_change_type=duration');
} else if (Config::get('database')['default'] === 'pgsql'){
// PostgreSQL
DB::statement('update plans set duration_change_type=duration::integer');
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('plans',function(Blueprint $table)
{
//
$table->dropColumn('duration_change_type');
});
}
第二次迁移: /**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('plans',function(Blueprint $table)
{
//
$table->dropColumn('duration');
$table->renameColumn('duration_change_type','duration');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('plans',function(Blueprint $table)
{
// Rollback to string
$table->string('duration_change_type')->default(0)->after('duration');
});
if (Config::get('database')['default'] === 'mysql'){
// Mysql
DB::statement('update plans set duration_change_type=duration');
} else if (Config::get('database')['default'] === 'pgsql'){
// PostgreSQL
DB::statement('update plans set duration_change_type=duration::text');
}
}
现在思考,可以简化为一次迁移. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
