Skip to content

A dev-friendly approach to handle database updates in Magento 2 🧰

License

Notifications You must be signed in to change notification settings

discorgento/module-migrations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Discorgento Migrations

A dev-friendly approach to keep track of database changes in Magento 2

GitHub Stars Total Downloads Latest Version on Packagist Join our Discord

Our Sponsors

Caravel X

Overview 💭

Just changed something on the admin panel or on the database and now you need to replicate it again in staging and production? No worries, we got you covered.

Probably you already heard about data patches, but what if I say that it can be really, really simplified?

image From 50 lines to just 15, or simply 70% less code. SEVENTY percent fewer lines. But we're just getting started.

Install 🔧

This module is compatible with both Magento 2.3 and 2.4, from PHP 7.3 to 8.3.

composer require discorgento/module-migrations:^2 && bin/magento setup:upgrade

Usage 🥤

Quick demo on how to use it:

There's also an extended version in Brazillian Portuguese including CMS content management overview available here.

Besides simplifying the basic structure like showed before, we also provide some facades to common tasks like handling admin config, product attributes, cms content and more. As an example, you can use a snippet like this to create a whole new CMS Page, including Page Builder widgets on its content:

<?php declare(strict_types=1);
/** Copyright © Your Company. All rights reserved. */

namespace YourCompany\YourModule\Setup\Patch\Data;

use Discorgento\Migrations\Setup\Migration;

class CmsPageMyNewPage extends Migration
{
    private Migration\Facade\CmsPage $cmsPage;

    public function __construct(
        Migration\Context $context,
        Migration\Facade\CmsPage $cmsPage
    ) {
        parent::__construct($context);
        $this->cmsPage = $cmsPage;
    }

    protected function execute()
    {
        $this->cmsPage->create('my-new-page', [
            'title' => 'Lorem Ipsum',
            'content' => <<<HTML
                <span>Hello World!</span>
            HTML,
        ]);
    }
}

Run a bin/magento setup:upgrade, navigate to the /my-new-page path, and that's it. And naturally as this is part of the deployment of new releases of your store, it will be automatically replicated in your integration/staging/production/whatever environments (and even your coworkers machines).

💡 Tip: Don't forget to check our official wiki to make the most use of this powerful m2 tool!

Notes 🗒

  • roadmap: create cli command to generate migrations for existant cms content (thanks @vpjoao98);
  • issues and PRs are welcome in this repo;
  • we want YOU for our community!