🏆
PHPでサクッとSQLite3をmigrationする方法
PHPで少しDBを扱いたいけど、MySQL使うまででもないという場合は結構ある
その時にいちいちライブラリ入れたりするのはだるいので、それっぽくテーブル構造をsqlファイルで書いてSQLiteに流し込みたい
作業手順
まずは適当に migrate.php
みたいなものを作り、以下の実装をコピペする (PHP8用に書いているので、PHP8以前のバージョンであれば適宜コードを変更するべし)
<?php
declare(strict_types=1);
$db = new SQLite3(__DIR__ . '/database.db');
$sql = file_get_contents(__DIR__ . '/migrations/1_create_users_table.up.sql');
if ($sql && $db->exec($sql)) {
echo "正常に終了しました\n";
} else {
echo "マイグレーションに問題が発生しました\n";
}
上記にも書いてある通りその後に /migrations/1_create_users_table.up.sql
を作成する
この書き方は golang-migrate の影響を受けているが、そもそもほとんどのマイグレーションツールで似たり寄ったりな書き方になっている
今回は適当に以下のようにするw
CREATE TABLE IF NOT EXISTS users
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
image_url VARCHAR(1000) NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL
);
後はコマンとをバシッと叩くだけ
php migrate.php
Discussion