PlatoPHP

迁移与数据填充

创建迁移

php vendor/bin/plato make:migration create_users
php vendor/bin/plato migrate
php vendor/bin/plato migrate:status
php vendor/bin/plato migrate:rollback
<?php

use plato\database\blueprint;
use plato\database\migration;
use plato\database\schema;

return new class extends migration {
    public function up(): void
    {
        schema::create('user', function (blueprint $table): void {
            $table->big_increments('id');
            $table->string('email', 190)->unique();
            $table->timestamps();
        });
    }

    public function down(): void
    {
        schema::drop_if_exists('user');
    }
};

每次 migrate 是一个 batch;rollback 回退最后一批。迁移器使用服务端锁防止两个发布进程同时执行,并在运行前加载全部文件。

schema 支持建表、改表、删除、重命名和存在性检查。blueprint 提供常见列、索引与修饰符,MySQL 与 ClickHouse grammar 各自编译可支持的 DDL。DDL 是否能回滚由数据库引擎决定,不能假设事务能撤销结构变更。

Seeder

php vendor/bin/plato make:seeder base_roles
php vendor/bin/plato db:seed --class=base_roles

Seeder 是显式、可重复运行的数据任务。框架不提供 model factory;业务夹具和领域默认数据应由宿主项目定义。