pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/phpcr/phpcr-migrations-bundle

sorigen="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-b69241e157469407.css" /> GitHub - phpcr/phpcr-migrations-bundle: Symfony Bundle for integrating the PHPCR migrations library · GitHub
Skip to content

phpcr/phpcr-migrations-bundle

Repository files navigation

PHPCR Migrations Bundle

This library provides a Symfony integration for the PHPCR migrations library.

It has initially been created by Daniel Leech as dantleech/phpcr-migrations-bundle and was then donated to the PHPCR organization.

Configuration

Configure the path to your migrations:

# config/packages/phpcr-migrations.yaml
phpcr_migrations:
    paths: [%kernel.project_dir%/phpcr-migrations]

And 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
// phpcr-migrations/Version201501011200.php

use PHPCR\SessionInterface;
use PHPCR\Migrations\VersionInterface;

class Version201501011200 implements VersionInterface
{
    public function up(SessionInterface $session): void
    {
        $session->getRootNode()->addNode('hello');
    }

    public function down(SessionInterface $session): void
    {
        $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): void
    {
        $session->getNode('/hello')->addNode('world');
    }

    public function down(SessionInterface $session): void
    {
        $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.

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 version
  • down: Revert one version
  • top: Migrate to the latest version
  • bottom: Revert all migrations

About

Symfony Bundle for integrating the PHPCR migrations library

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy