プラグインのスキーマのマイグレーション¶
Kanboard は自動的にデータベースのマイグレーションを行います。マイグレーションは Schema フォルダに保存されている、データベースのドライバーと同じファイル名のものでなければなりません :
Schema
├── Mysql.php
├── Postgres.php
└── Sqlite.php
個々のファイルはマイグレーションの全てを含んでいます。ここにSqliteの例を示します:
<?php
namespace Kanboard\Plugin\Something\Schema;
const VERSION = 1;
function version_1($pdo)
{
$pdo->exec('CREATE TABLE IF NOT EXISTS something (
"id" INTEGER PRIMARY KEY,
"project_id" INTEGER NOT NULL,
"something" TEXT,
FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
)');
}
- 定数
VERSION
はスキーマの最新版です。 version_1()
,version_2()
, 等の個々の関数でマイグレーションをします。PDO
インスタンスは最初の引数をパスします・- 全ての事はトランザクション内部で実行され、何か問題があればロールバックが実行され、ユーザーにはエラーが表示されます。
Kanboardは データベースに保存されているバージョンとスキーマ内で定義されているバージョンを比較します。バージョンが違う場合、Kanboard は最新版に到達するまで個々のマイグレーションを一つ一つ行います。