今回はLaravelにおける、データベース周りの設定についての解説です。
主に使うファイルは以下の2つ。
✔ .env
✔ config/database.php
初めて触った時に混乱したので備忘録としてメモ。
.envファイルとは?
.env は開発環境やステージング環境、本番環境などで、環境毎に変更したい情報をまとめておくファイルです。
KEY=VALUE形式で環境変数を設定できます。
ユーザー名・パスワードなどの重要な情報をまとめて設定しておくファイルなので、gitでバージョン管理する時は.gitignoreに入れておいて、バージョン管理からは外しておこう。
config/database.phpファイルとは?
Laravel では データベースとしてSQLite, MySQL, PostgreSQL, SQL Server に対応しています。
config/database.phpではconnections 配列で上記のデータベース種類に応じて必要となる接続情報を定義するファイルです。
config/database.phpでは以下のような記述がされています。
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
// ....
];
env関数の第1引数で .env ファイル内に定義してある KEYを指定し、その VALUEを取得します。第2引数にはデフォルト値を設定します。
.envとconfig/database.phpの関係
上記で見たようにconfig/database.phpは.envで定義された環境変数を参照するので、.envに設定した値が優先されるというわけですね。
第2引数のデフォルト値が適用されるのは、.envファイルがない場合や、環境変数が未定義の場合のみです。
まとめ
参考サイト・書籍は以下がオススメ。
ヘルパ 5.5 Laravel

初めてのLaravel 5.6 : (6) データベースの環境設定
Laravel で データベースの設定を行います。