🏆

PHPでサクッとSQLite3をmigrationする方法

2023/02/04に公開

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