繁体   English   中英

Laravel-将列添加到现有数据透视表并添加MUL键

[英]Laravel - Add column to existing pivot table and add MUL key

我有一个Laravel数据透视表,其中包含多个主键:“ order_id”,“ product_id”,“ variation_id”。

我需要在此表中添加一个名为“ id”的新列,其操作如下:

public function up()
    {
        Schema::table('order_product', function (Blueprint $table) 
        {
            $table->integer('id')->unsigned()->after('variation_sku');
        });
    }

我的原始迁移文件如下所示:

public function up()
    {
        Schema::create('order_product', function (Blueprint $table) 
        {
            $table->integer('order_id')->unsigned()->index();
            $table->foreign('order_id')->references('order_id')->on('orders')->onDelete('cascade');
            $table->integer('product_id')->unsigned()->index();
            $table->foreign('product_id')->references('product_id')->on('products')->onDelete('cascade');
            $table->integer('variation_id')->unsigned()->index()->nullable();
            $table->jsonb('variation')->nullable();
            $table->integer('qty');
            $table->string('variation_status')->default('bakery');
            $table->timestamps();
            $table->softDeletes();
            $table->primary(['order_id', 'product_id', 'variation_id']);
        });
    }

此迁移包括我的3个复合键。

现在,我需要添加新列“ id”,并将此列添加到组合键中。

我在Laravel文档中找不到任何内容,并且怀疑这可能是不可能的,因为它可能会影响此表中的过去记录。

您可以删除主键,然后创建一个新的:

public function up()
{
    Schema::table('order_product', function (Blueprint $table) 
    {
        $table->integer('id')->unsigned()->after('variation_sku');
        $table->dropPrimary();
        $table->primary(['id', 'order_id', 'product_id', 'variation_id']);
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM