You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Laravel迁移实现新增列、复制数据并更新原有列数据

Laravel生产环境价格调整迁移方案

完全可以通过Laravel的Migration实现全部需求,单份迁移文件即可完成结构变更+数据更新的所有操作,全程无需删表,适配生产环境使用。


操作步骤

  1. 生成迁移文件
    执行如下Artisan命令生成迁移文件,将命令中你的表名替换为实际业务表名:
php artisan make:migration add_old_price_and_update_price_to_你的表名_table
  1. 编写迁移逻辑
    打开生成的迁移文件(位于database/migrations/目录下),替换为如下代码,注意替换你的实际表名,且old_price字段的类型、长度要和原有price字段完全一致,避免精度丢失:
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;

return new class extends Migration
{
    public function up()
    {
        // 第一步:新增old_price字段
        Schema::table('你的实际表名', function (Blueprint $table) {
            // 示例为decimal(8,2),请和你原有price字段配置保持完全一致
            $table->decimal('old_price', 8, 2)->after('price');
        });

        // 事务包裹数据操作,出错自动回滚避免脏数据
        DB::transaction(function () {
            // 第二步:备份原有price到old_price
            DB::table('你的实际表名')->update([
                'old_price' => DB::raw('`price`')
            ]);
            // 第三步:price值乘以5更新
            DB::table('你的实际表名')->update([
                'price' => DB::raw('`price` * 5')
            ]);
        });
    }

    public function down()
    {
        // 回滚时自动恢复原有价格
        DB::transaction(function () {
            DB::table('你的实际表名')->update([
                'price' => DB::raw('`old_price`')
            ]);
        });

        // 删除临时备份字段
        Schema::table('你的实际表名', function (Blueprint $table) {
            $table->dropColumn('old_price');
        });
    }
};
  1. 执行迁移
    先在测试环境验证迁移逻辑正常后,在生产环境执行如下命令完成变更:
php artisan migrate

后续清理说明

确认新价格运行正常需要删除old_price字段时,单独生成删字段的迁移即可:

php artisan make:migration drop_old_price_from_你的表名_table

在迁移文件的up方法中编写删除字段逻辑,执行迁移即可完成清理。


生产环境注意事项

  • 执行迁移前务必做好全量数据库备份
  • 若表数据量超过10万条,建议在业务低峰期执行迁移,避免锁表影响正常请求

内容的提问来源于stack exchange,提问作者R0KKET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:09:00