PHPCR Migrations Bundle
This library provides a Symfony integration for the PHPCR migrations
library., (*1)
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., (*2)
dantleech/phpcr-migrations-bundle
will remain available to not break existing installations, but
is no longer maintained., (*3)
Configuration
Configure the path to your migrations:, (*4)
# 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., (*5)
Creating migrations
First create two new migration files:, (*6)
<?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, (*7)
<?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
)., (*8)
Now execute the phpcr:migrations:status
command:, (*9)
$ 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:, (*10)
$ 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:, (*11)
Reverting
You can now revert back to the first version as follows:, (*12)
$ php app/console phpcr:migrations:migrate 201501011200
Reverting 1 version(s):
- [1/4]: V201501011212
Actions
In addition to specifying versions you can specify actions:, (*13)
$ php app/console phpcr:migrations:migrate up
Upgrading 1 version(s):
- [1/4]: V201501011212
Actions are:, (*14)
-
up
: Upgrade one version
-
down
: Revert one version
-
top
: Migrate to the latest version
-
bottom
: Revert all migrations