10分でできる!Laravelでsqliteデータベースに接続
環境
- PC(OS): chromebook (debian)
- laravel: 8.44.0
- データベース: sqlite 3
前提条件
laravelインストール直後の状態から始めます。chromebookのlinuxにはデフォルトでsqlite3が入ってませんので、sqlite3のインストールも合わせて説明します。
sqliteデータベースを作成する
まずはsqliteのデータベースファイルを作成します。sqliteはプロジェクト内にデータベースファイルを埋め込みます。デフォルトではdatabaseフォルダ以下にdatabase.sqliteという名前で接続する設定になっているので、空のファイルを作成します。
touch database/database.sqlite
sqliteのインストール
データベースの中身を確認するために、cliのコマンドをインストールしておきます。
sudo apt-get install sqlite3
laravelからsqliteを操作するために、phpの拡張モジュールをインストールしておきます。コマンドはapt-get install php[phpのバージョン]-sqlite3です。私の環境は7.3なので以下のコマンドとなります。バージョンはご自身の環境に応じて書き換えてください。
sudo apt-get install php7.3-sqlite3
次にインストールした拡張モジュールを有効化するために、php.iniを編集します。php.iniの場所がわからない方は以下のコマンドで確認します。多くの結果が出力されるかもしれませんが、Loaded Configuration Fileで始まる行がphp.iniのパスです。
php --ini
Configuration File (php.ini) Path: /etc/php/7.3/cli
Loaded Configuration File: /etc/php/7.3/cli/php.ini
vimで開きます。
vim /etc/php/7.3/cli/php.ini
以下の行がコメントアウトされている場合は、コメントを外します。
extension=pdo_sqlite
Laravel からsqlite3への接続設定
Laravelのデータベース接続設定ファイルの該当箇所を見てみましょう。ファイルはconfig/database.phpです。
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
sqliteで始まるブロック内が接続先となります。’database’項目が接続先のファイルパスです。デフォルトではdatabase/database.sqliteファイルに接続します。今回はこの設定に合わせてデータベースファイルを作成しましたので、このファイルを編集する必要はありません。(異なるデータベース名をつけた場合は、このファイルのファイルパス部分を編集してください。
次に.envの設定を行います。初期設定では以下のようにmysqlに接続する設定になっていますので、sqliteの設定に変更します。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
DB_CONNECTIONだけ残し、それより後ろの行は削除します。DB_CONNECTIONの値はsqliteに変更します。変更後は以下の通りです。
DB_CONNECTION=sqlite
以上でLaravelからsqliteを使用する設定がすべて完了しました。
Laravelからテーブルを作成してみる
ではLaravelからSqliteを操作できるか確認してみましょう。インストール時に作られるマイグレーションを実行してみます。マイグレーションが無事に終わればsqliteとの接続完了です。
php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (102.96ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (106.97ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (89.78ms)
作成したテーブルが本当にできているか、sqlite3コマンドで確認してみましょう。sqlite3コマンドでファイルをしていして対話コンソールを開きます。.tablesコマンドでテーブルの一覧を表示してみます。以下のような結果が表示されれば完了です。
sqlite3 database/database.sqlite
sqlite> .tables
failed_jobs migrations password_resets users
ディスカッション
コメント一覧
まだ、コメントがありません