F3-Migrations is a database helper plugin for the Fat-Free Framework.
It's something like version control for the sql databases. Every time you have to make some changes manually in your database, you can make a MigrationCase
, and the plugin will handle that.
If you use composer, run the below code:
composer require myaghobi/f3-migrations
For manual installation:
- Copy the content of
lib/
folder into yourlib/
folder. - Install Schema Builder as mentioned in its documentation.
- Install Html2Text, by placing the
html2text.php
inside of a folder namedhtml2text
in yourlib/
.
The plugin provides a simple web interface, consists of 4 routes that will auto add to your app:
GET /migrations
displays the web interfaceGET /migrations/@action
triggers an actionGET /migrations/@action/@target
specific target version for the actionGET /migrations/theme/@type/@file
to retrive css/js files if you have stored the UI dir in non-web-accessible path (recommended)
Also, it will create a table in your database named migrations
to handle migrations.
Instantiate the Migrations
class before f3->run()
. The plugin works if DEBUG>=3
, otherwise, it goes disable because of security issues and to get no resource usage.
To work with Migrations
you need an active SQL connection:
// require('vendor/autoload.php');
// $f3=Base::instance();
$f3=require('lib/base.php');
...
// Acording to f3-schema-builder
// MySQL, SQLite, PostgreSQL & SQL Server are supported
$db = new \DB\SQL('mysql:host=localhost;port=3306;dbname='.$DBName, $user, $pass);
...
\DB\MIGRATIONS\Migrations::instance($db);
$f3->run();
- Make sure the path of your cases directory be exists and secure.
- Call
yourAppPublicUrl/migrations
in browser. - Use
makecase
action to make your first migration case. - Call
migrate
action.
This plugin is configurable via config file:
[migrations]
ENABLE=true
; PATH relative to `index.php`
PATH=../migrations
SHOW_BY_VERSOIN=true
CASE_PREFIX=migration_case_
LOG=true
The above config is the default, you can ignore/remove each one you don't need to change.
You can find the logs of actions in migrations.log
located in the LOGS folder.
Just run the below code:
php index.php /migrations
- First update the plugin via composer or manually.
- Now the path of migration cases is relative to
index.php
, so make sure it be exists. - Make a backup of your DB and migration cases.
- Call
upgrademc
action to update the old migration cases.
Finally call fresh
action.
You are allowed to use this plugin under the terms of the GNU General Public License version 3 or later.
Copyright (C) 2021 Mohammad Yaghobi