dantleech / phpcr-migrations-bundle
PHPCR migrations bundle
Installs: 1 038 905
Dependents: 20
Suggesters: 0
Security: 0
Stars: 50
Watchers: 4
Forks: 7
Open Issues: 4
Requires
- php: ^7.2 || ^8.0
- doctrine/phpcr-bundle: ^1.3 || ^2.0
- phpcr/phpcr-implementation: ^2.1
- phpcr/phpcr-migrations: ^1.1
- symfony/config: ^4.4 || ^5.4 || ^6.0
- symfony/console: ^4.4 || ^5.4 || ^6.0
- symfony/dependency-injection: ^4.4 || ^5.4 || ^6.0
- symfony/http-kernel: ^4.4 || ^5.4 || ^6.0
Requires (Dev)
- doctrine/doctrine-bundle: ^1.8 || ^2.0
- doctrine/phpcr-odm: ^1.4
- symfony-cmf/testing: ^2.1 || ^3.0 || ^4.0
- symfony/monolog-bundle: ^2.0 || ^3.0
- symfony/phpunit-bridge: ^5.4 || ^6.0
- symfony/symfony: ^4.4 || ^5.4 || ^6.0
Conflicts
- symfony/symfony: 3.4.15
README
This library provides a Symfony integration for the PHPCR migrations library.
This version has been archived
This bundle has been renamed to phpcr/phpcr-migrations-bundle. We recommend to update your dependencies to get the latest version.
dantleech/phpcr-migrations-bundle
will remain available to not break existing installations, but
is no longer maintained.
Configuration
Configure the path to your migrations:
# app/config.yml phpcr_migrations: paths: [%kernel.root_dir%/phpcr-migrations]
Or the bundle will automatically pick up any migrations in the
Resources/phpcr-migrations
folder in any bundles registered in the kernel.
Creating migrations
First create two new migration files:
<?php // app/phpcr-migrations/Version201501011200.php use PHPCR\SessionInterface; use PHPCR\Migrations\VersionInterface; class Version201501011200 implements VersionInterface { public function up(SessionInterface $session) { $session->getRootNode()->addNode('hello'); } public function down(SessionInterface $session) { $session->getRootNode()->getNode('hello')->remove(); } }
and
<?php // app/phpcr-migrations/Version201501011212.php use PHPCR\SessionInterface; use PHPCR\Migrations\VersionInterface; class Version201501011212 implements VersionInterface { public function up(SessionInterface $session) { $session->getNode('/hello')->addNode('world'); } public function down(SessionInterface $session) { $session->getNode('/hello')->getNode('world')->remove(); } }
Migration status
Note that migration MUST be named as follows: VersionYYYMMDDHHSS
. If they
are not so-named, they will not be detected. The timestamp SHOULD be the
current date (in this example 2015/01/01 12:00
).
Now execute the phpcr:migrations:status
command:
$ php app/console phpcr:migrations:status +--+---------------+------------------+----------+----------------------------------------------+ | | Version | Date | Migrated | Path | +--+---------------+------------------+----------+----------------------------------------------+ | | 201501011200 | 2015-01-01 12:00 | NO | app/phpcr-migrations/Version201501011200.php | | | 201501011212 | 2015-01-01 12:12 | NO | app/phpcr-migrations/Version201501011212.php | +--+---------------+------------------+----------+----------------------------------------------+ No migrations have been executed
Executing migrations
Now we can run the migrations:
$ php app/console phpcr:migrations:migrate Upgrading 2 version(s): + [1/2]: 201501011200 + [2/2]: 201501011212
This should run the two migrations, your status should not look like this:
Reverting
You can now revert back to the first version as follows:
$ php app/console phpcr:migrations:migrate 201501011200 Reverting 1 version(s): - [1/4]: V201501011212
Actions
In addition to specifying versions you can specify actions:
$ php app/console phpcr:migrations:migrate up Upgrading 1 version(s): - [1/4]: V201501011212
Actions are:
up
: Upgrade one versiondown
: Revert one versiontop
: Migrate to the latest versionbottom
: Revert all migrations