Skip to content
This repository has been archived by the owner on Feb 6, 2023. It is now read-only.

orkhanahmadov/content-migrations

Repository files navigation

Laravel Content Migrations

Latest Stable Version Latest Unstable Version Total Downloads License

Build Status Test Coverage Maintainability Quality Score StyleCI

Package simplifies having content-based migrations separate from Laravel's migrations.

Why?

Sometimes using migrations to manage content in database tables comes very handy to automate the content update process on all environments. Like adding new translations or updating products.

But using Laravel's own migrations for this purpose have some drawback:

  • Laravel's migrations are not meant for content management, it is meant for database structure changes only.
  • After some time it gets hard to manage and find content-based migrations among many migration files.
  • Recent introduction of "migration squashing" in Laravel 8 copies only last state of database structure. This means if you have content-based migrations you need to find a way to migrate them again if you have an empty database.

Laravel seeders are ideal for managing content in your database, but they also have their drawbacks:

  • They are not as automatic as migrations, you need to run and track each of them individually
  • If you have an empty datatabase it becomes hard, almost impossible to know the order of seeders to run

This package aims to solve these problems by having dedicated content-based migrations separate from usual Laravel migrations.

Requirements

  • PHP 7.2 or above
  • Laravel 6 or above

Installation

You can install the package via composer:

composer require orkhanahmadov/content-migrations

Usage

To create content-based migration run make:content-migration artisan command and pass migration name:

php artisan make:content-migration add_new_translations

This will command will generate timestamp-based content migration inside database/content-migrations folder of your application.

Generated migration will have single up() method, you can use this method to insert/update/delete content in your database.

To migrate your content-based migrations, run:

php artisan content-migrate

This will behave the same way as Laravel's own php artisan migrate command, but this command will track processed migrations in content_migrations table, separate from Laravel's migrations table.

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email orkhan@fastmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.