Documentación oficial

Migraciones

Referencia técnica de Migraciones — Joss language and Joss Red ecosystem.

Migraciones

Índice · Antes: Schema · Después: CLI

Una migración guarda un cambio de estructura para que distintos entornos puedan aplicarlo en el mismo orden. up aplica el cambio; down describe cómo revertirlo, aunque no implica que exista un comando de rollback público.

joss make:migration create_products
joss migrate
joss migrate:fresh

El nombre puede escribirse como create_products, create_products_table o product; las tres formas normalizan la tabla lógica a products y generan CreateProductsTable. La grafía del comando es make:migration.

El generador crea una clase que extiende Migration, con up() y down(). El runner ejecuta migraciones pendientes en orden de nombre y registra el batch en la tabla de migraciones con el prefijo configurado.

public class CreateProductsTable extends Migration {
    public func up() {
        Schema::create("products", func(Blueprint $table) {
            $table->id()
            $table->string("name")
            $table->timestamps()
        })
    }

    public func down() {
        Schema::drop("products")
    }
}

No añadas manualmente el prefijo a menos que quieras fijarlo en código; Schema lo aplica desde PREFIX/DB_PREFIX.

migrate:fresh elimina todas las tablas visibles del esquema, vuelve a crear las tablas internas y ejecuta las migraciones. Es destructivo y está pensado para desarrollo o entornos desechables.

Una migración sólo se considera completada después de registrar su nombre y batch. Un fallo de lectura, parseo, estructura o registro detiene el comando con código de salida distinto de cero.

Hay adaptadores para SQLite, MySQL, PostgreSQL y SQL Server; valida las operaciones concretas en el motor elegido. Los detalles de columnas, índices y claves foráneas están en Schema Builder.