Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Phpcr Migrations Laravel Package

phpcr/phpcr-migrations

View on GitHub
Deep Wiki
Context7

PHPCR Migrations

Build
Status

Migrations library for PHPCR influenced by Doctrine migrations.

For integration with Symfony see the PHPCR Migrations Bundle.

Usage

<?php

use Symfony\Component\Console\Output\NullOutput;
use PHPCR\Migrations\VersionStorage;
use PHPCR\Migrations\VersionFinder;
use PHPCR\Migrations\Migrator;

$storage = new VersionStorage($phpcrSession);
$finder = new VersionFinder(['/path/to/migrations']);

$versions = $finder->getVersionCollection();
$migrator = new Migrator($session, $versionCollection, $storage);

$to = '201504241744';
$output = new NullOutput();
$migrator->migrate($to, $output);

You may also create a factory class (useful when you use dependency injection):

<?php

$factory = new MigratorFactory($storage, $finder, $session);
$migrator = $factory->getMigrator();

Initializing

When you install a project for the first time you need to initialize the versions:

<?php

$migrator->initialize();

This should be part of your build process and it will add all the versions to the migration version node in the content repository.

Migrating

$migrator->migrate('201501011200', $output); // migrate to a specific version
$migrator->migrate('up', $output); // migrate up a version
$migrator->migrate('down', $output); // migrate down a version
$migrator->migrate('top', $output); // migrate to the latest version
$migrator->migrate('bottom', $output); // revert all versions

Listing versions

You can access information about available versions from the VersionCollection object:

$versionCollection->getAllVersions();

Determining the current version

You can determine the current version from the VersionStorage object:

$versionStroage->getCurrentVersion();

Version classes

Version classes contain up and down methods. The class is quite simple:

<?php

use PHPCR\Migrations\VersionInterface;

class Version201504241200 implements VersionInterface
{
    public function up(SessionInterface $session)
    {
        $session->doSomething();
    }

    public function down(SessionInterface $session)
    {
        $session->undoSomething();
    }
}

They must be named VersionYYYMMDDHHMM. If they are not so named, then they will not be detected.

The down method should revert any changes made in the up method. Always check that revcerting your migration works.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor