Skip to content

pagemachine/typo3-phinx

Repository files navigation

Phinx integration for TYPO3 CI

This package provides a integration of the Phinx database migration tool for TYPO3.

All Phinx commands have been wrapped as phinx:<command> and can be executed using the TYPO3 CLI:

# Create a new migration
typo3 phinx:create

# Migrate the database
typo3 phinx:migrate

# Rollback the last or to a specific migration
typo3 phinx:rollback

# Show migration status
typo3 phinx:status

# Create a new database seeder
typo3 phinx:seed:create

# Run database seeders
typo3 phinx:seed:run

Notice that these wrapper commands are executed by TYPO3, thus the full API like DataHandler can be used in migrations.

(For TYPO3v11 and TYPO3 Console 7.x or older you need to use typo3cms instead.)

Migrations

The following paths are used for migrations:

  • vendor/*/*/Migrations/Phinx
  • vendor/*/*/Classes/Migrations/Phinx

The following paths are used for TYPO3v11 and older:

  • typo3conf/ext/*/Migrations/Phinx
  • typo3conf/ext/*/Classes/Migrations/Phinx

Examples to create a migration in a TYPO3 project:

  • typo3 phinx:create --path packages/provider/Classes/Migrations/Phinx MyMigration

Note

If one Migrations directory exists already, you can omit --path. However, should multiple exist, you will receive a prompt and have to select the desired location.

Seeds

The following paths are used for seeds:

  • vendor/*/*/Migrations/Phinx/Seeds
  • vendor/*/*/Classes/Migrations/Phinx/Seeds

The following paths are used for TYPO3v11 and older:

  • typo3conf/ext/*/Migrations/Phinx/Seeds
  • typo3conf/ext/*/Classes/Migrations/Phinx/Seeds

Examples to create a seed in a TYPO3 project:

  • typo3 phinx:seed:create --path packages/provider/Classes/Migrations/Phinx/Seed MySeeder

Note

If one Migrations/Seed directory exists already, you can omit --path. However, should multiple exist, you will receive a prompt and have to select the desired location.

Testing

All tests can be executed with the shipped Docker Compose definition:

docker compose run --rm app composer build