[Lumen] DBをSQLiteに変更する方法

Nプログラマ(@Nprog128)です。
Laravel製のマイクロフレームワークLumenで、データベースをSQLiteに設定する方法を備忘録として残しておきます。
概要
目標
Lumenで使うDBをSQLiteにする。
前提条件
- PHP: インストール済み
- Composer: インストール済み
- Lumen Installer: インストール済み
- プロジェクト: 作成済み(ディレクトリ名sample)
上記のとおりLumenコマンドでのプロジェクト作成の直後、という想定です。
時間があればインストールの記事も書いてみたいと思います。
検証環境
アプリ名 | version |
---|---|
Mac OSX | 10.13.6 |
PHP | 7.2.12 |
Lumen Installer | 1.02 |
Lumen | 5.7.7 |
データベースファイル(sqlite)を作成
まずsqliteのデータベースを作成します。
エディタやコマンドを使い、空ファイルを作成しましょう。
今回はtouchコマンドを使います。
1# sampleディレクトリに移動して、空ファイルを作成
2touch ./database/sample.sqlite
公開ディレクトリのみ使えるレンタルサーバなどの場合は、.htaccessなどで直接ファイルにアクセスできないような設定が必要です。
.envファイルを作成(コピー)
sampleディレクトリ直下に、.env.exampleがあるので、それを.envにリネームしてコピーします。
1# 設定ファイルをリネームしてコピー
2cd .env.example .env
参考
- Configuration - Lumen - PHP Micro-Framework By Laravel
.env.exampleを.envにリネームしてコピーするという部分を参考にしました。
使用するデータベースをSQLiteに変更
.envファイルを開いて、DB_という接頭辞がついたところを変更してきます。
他のDB_CONNECTIONとDB_DATABASE以外は使わないので、削除かコメントアウトします。
今回は削除する方法でやります。
変更前 (.envファイル)
1
2# ここより上は他の設定があります
3
4DB_CONNECTION=mysql # ここをsqliteに変更します
5DB_HOST=127.0.0.1
6DB_PORT=3306
7DB_DATABASE=homestead # 先程作成したsample.sqliteの絶対パスを指定します
8DB_USERNAME=homestead
9DB_PASSWORD=secret
10
11# ここより下は他の設定があります
変更後 (.envファイル)
1# ここより上は他の設定があります
2
3DB_CONNECTION=sqlite
4DB_DATABASE=/sampleまでのフルパス/database/sample.sqlite # 作成したsqliteのファイルを指定
5
6# ここより下は他の設定があります
接続テスト
データベースに接続するために、sqlite3コマンドを使います。
(IDEを使っている場合は、接続の機能が準備されていることがあるのでそちらを使ってもいいと思います)
1# sample.sqliteデータベースへ接続
2sqlite3 database/sample.sqlite
3
4# DB接続を切断
5.exit
無事接続できたのでここで終わりなのですが、せっかくここまできたので、migrateコマンドでテーブルを作成するところもやってみます。
migrateするファイルを追加
テーブルを追加するためusersというmigrationファイルを作成します。
1php artisan make:migration create_users_table # usersのmigrationファイルを作成
参考
- Database - Lumen - PHP Micro-Framework By Laravel
- Database: Migrations - Laravel - The PHP Framework For Web Artisans
lumenからlaravelのドキュメントへリンクがあるので、laravelのドキュメントを参考にして、usersのmigrationファイルを作りました。
migrateを実行
migrationファイルを追加したので、migrateコマンドを実行します。
artisanコマンドを実行するため、プロジェクトの直下に移動することを忘れずに。。。
1php artisan migrate
作成されたテーブルを確認
実際に追加したテーブル(users)が作成されているかを確認します。
1# sample.sqliteデータベースへ接続
2sqlite3 database/sample.sqlite
3
4# テーブル一覧を確認
5.table
6
7# usersテーブルのスキーマを確認
8.schema users
9
10# レコードが空なので何も表示されない
11select * from users;
12
13# DB接続を切断
14.exit
データベースにusersテーブルが追加されていますね。
これで終了です。お疲れ様でした。
終わりに
今回は、Lumenで使用するDBをSQLiteに変更しました。
SQLiteへ変更後、migraiton実行でDBに接続して書き込めるところも確認しました。
MySQLを使うことができないレンタルサーバなどで使えそうです。
それでは、このへんで。
バイナリー!