全书目录

第二十七篇:Laravel 完全指南 —— 工匠城区宇宙

第七章:Migration —— 城区施工蓝图的演进档案

1 分钟 222 字 第 484 / 962 个阅读单元

很多初学者把 Migration 理解成:

text
“创建表的脚本”

这太浅了。

更准确地说,Migration 是:

text
城区施工蓝图的版本化演进记录

它回答的问题不是“当前表长啥样”,而是:

text
这座城区的仓库和街道,是怎么一步一步被改造成今天这样的

一个最小例子:

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

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('orders', function (Blueprint $table) {
            $table->id();
            $table->string('customer_name');
            $table->string('product');
            $table->unsignedInteger('quantity');
            $table->string('status')->default('pending');
            $table->timestamps();
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('orders');
    }
};

它的心智不是:

text
我今天顺手写个表

而是:

text
我要把“数据结构变化”纳入代码历史

所以 Migration 的价值在于:

  • 团队协作时,数据结构变更可追踪
  • 环境重建时,蓝图能自动重放
  • 功能上线时,数据库变化不再是“口头通知 DBA”

把 Eloquent 和 Migration 放在一起看,就会更清楚:

text
Migration 定义仓库结构怎么变
Eloquent 定义工头如何读写仓库

这两者合起来,Laravel 的数据层才完整。