很多初学者把 Migration 理解成:
“创建表的脚本”这太浅了。
更准确地说,Migration 是:
城区施工蓝图的版本化演进记录它回答的问题不是“当前表长啥样”,而是:
这座城区的仓库和街道,是怎么一步一步被改造成今天这样的一个最小例子:
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');
}
};它的心智不是:
我今天顺手写个表而是:
我要把“数据结构变化”纳入代码历史所以 Migration 的价值在于:
- 团队协作时,数据结构变更可追踪
- 环境重建时,蓝图能自动重放
- 功能上线时,数据库变化不再是“口头通知 DBA”
把 Eloquent 和 Migration 放在一起看,就会更清楚:
Migration 定义仓库结构怎么变
Eloquent 定义工头如何读写仓库这两者合起来,Laravel 的数据层才完整。