API Reference

Class and method documentation for WPZylos Migrations.

Migrator

Migration runner — executes, rolls back, and tracks database migrations.

Namespace: WPZylos\Framework\Migrations

Constructor

public function __construct(
    ContextInterface $context,
    Connection $db,
    MigrationRepository $repository,
    ?string $migrationsPath = null
)
ParameterTypeDefaultDescription
$contextContextInterfacePlugin context
$dbConnectionDatabase connection
$repositoryMigrationRepositoryTracks which migrations have run
$migrationsPath?stringnullCustom path (default: database/migrations)

Methods

MethodReturnDescription
run()string[]Run all pending migrations, returns names of those that ran
rollback(int $steps = 1)string[]Rollback last $steps batches, returns names rolled back
status()arrayGet status of all migrations (ran vs pending)
getPending()string[]Get list of pending migration names

Example

$migrator = $app->make(Migrator::class);

// Run pending
$ran = $migrator->run();
// ['2024_01_15_create_products_table']

// Rollback last batch
$rolled = $migrator->rollback();

// Check status
$status = $migrator->status();

// Get pending only
$pending = $migrator->getPending();

Migration (Base Class)

Abstract base class for all migrations. Extend this and implement up().

Namespace: WPZylos\Framework\Migrations

Public Methods

MethodReturnDescription
setConnection(Connection $db)voidSet the database connection (called automatically by Migrator)
up()voidAbstract — Run the migration
down()voidReverse the migration (override if rollback needed)

Protected Helper Methods

MethodReturnDescription
create(string $table, array $columns, array $keys = [])arrayCreate a table using dbDelta()
dropTable(string $table)boolDrop a table (without prefix)
drop(string $table)boolAlias for dropTable()
charsetCollate()stringGet WordPress charset collation string
runDbDelta(string $sql)arrayExecute raw SQL via dbDelta()

Migration Example

<?php

declare(strict_types=1);

namespace MyPlugin\Database\Migrations;

use WPZylos\Framework\Migrations\Migration;

class CreateProductsTable extends Migration
{
    public function up(): void
    {
        $this->create('myplugin_products', [
            'id'         => 'bigint(20) unsigned NOT NULL AUTO_INCREMENT',
            'name'       => 'varchar(255) NOT NULL',
            'price'      => 'decimal(10,2) NOT NULL DEFAULT 0',
            'created_at' => 'datetime DEFAULT CURRENT_TIMESTAMP',
        ], [
            'PRIMARY KEY (id)',
        ]);
    }

    public function down(): void
    {
        $this->drop('myplugin_products');
    }
}

MigrationRepository

Tracks which migrations have run using WordPress options.

Namespace: WPZylos\Framework\Migrations

Constructor

public function __construct(
    ContextInterface $context,
    bool $networkActivated = false
)

Methods

MethodReturnDescription
getRan()arrayGet list of all migrations that have been run
log(string $migration)voidRecord a migration as run
remove(string $migration)voidRemove a migration record
getLastBatch()intGet the last batch number
incrementBatch()intIncrement and return new batch number
clear()voidClear all migration records

MigrationsServiceProvider

Registers the migration system with the container.

Registered Services

BindingTypeDescription
MigrationRepository::classSingletonMigration tracking
Migrator::classSingletonMigration runner

Dependencies

  • wpzylos-databaseConnection class
  • wpzylos-coreContextInterface