Web制作・プログラミング関連のおすすめレビュー記事はこちら

【Laravel】.envとconfig/database.phpの関係と各種設定方法

Laravel

今回は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 で データベースの設定を行います。
タイトルとURLをコピーしました