我想在Laravel中重命名外键。
这是我创建的方式:
winodws sdk
现在,我想将account_id更改为engagement_id。该怎么做?
答案 0 :(得分:1)
您需要通过以下方式进行新的迁移:
php artisan make:migration rename_column
在里面:
class RenameColumn extends Migration
{
public function up()
{
Schema::table('accounts', function(Blueprint $table) {
$table->renameColumn('account_id ', 'engagement_id');
});
}
public function down()
{
Schema::table('accounts', function(Blueprint $table) {
$table->renameColumn('account_id ', 'engagement_id');
});
}
}
然后执行迁移:
php artisan migrate
如果您还没有,则需要教义。您可以使用
通过composer获得此功能 composer require doctrine/dbal
答案 1 :(得分:1)
应该是这样的:
注意:重命名外来语之前,您必须删除旧的外来语并分配新的外来语
class RenameColumn extends Migration
{
public function up()
{
Schema::table('holidays', function(Blueprint $table) {
$table->dropForeign('holidays_account_id_foreign');
$table->renameColumn('account_id ', 'engagement_id');
$table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade');
});
}
public function down()
{
Schema::table('holidays', function(Blueprint $table) {
$table->dropForeign('holidays_engagement_id_foreign');
$table->renameColumn('account_id ', 'engagement_id');
$table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade');
});
}
}
答案 2 :(得分:0)
@rborum解释的内容要求安装doctrine / dbal软件包。否则,您可以直接执行sql查询来重命名密钥或进行其他任何更改。