こんにちは、タクローです。
今回は、Laravelのデータベース設定について解説していきます。
Laravelを使っていれば、当然、データベースもあわせて使っていくことになると思います。
そんな時に、やらなければならないのがデータベース設定。
今回の記事は、XAMPPを使ってLaravelを勉強している最中の方や、Laravelを始めてまだ日が浅い方などを対象に解説していきます。
また、今回は「XAMPP環境」、かつデータベースは「MariaDB(MySQL)」を使うことを前提として設定方法を解説します。
Laravelのデータベース設定は、さほど難しいことはありません。
簡単にデータベース設定できてしまうところもLaravelの大きな特徴でしょう。
解説を始めるにあたり、私が使っているLaravelのバージョンは、「7.6.2」です。
ご参考までに。
目次
環境変数の設定
データベースの設定方法を解説するにあたり、「MariaDB(MySQL)」でデータベースがすでに作成されていることを前提とさせていただきます。
まだの方は、まずデータベースを作成しておいてください。
それでは、本題に入りますが、Laravelでは「環境変数」を設定することで、データベース設定が可能になります。
まず、Laravelプロジェクトのルートディレクトリに「.env」というファイルがありますので、見つけてください。
この「.env」ファイルを開くことで、「環境変数」を設定することができます。
ファイル内、「DB_CONNECTION」で始まる6行を見つけてください。
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=hoge DB_USERNAME=root DB_PASSWORD=hoge
初めの3行について、XAMPP環境の「MariaDB(MySQL)」を使うのであれば、以下のようになっているか確認してください。
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306
4行目以後、「DB_DATABASE」はデータベース名、「DB_USERNAME」はMariaDB(MySQL)のログインユーザー名、「DB_PASSWORD」はログインパスワードです。
環境に合わせて、各変数の値を書き換えてください。
これで、環境変数の設定が完了しました。
データベースの種類を設定しよう
Laravelプロジェクト、「config」フォルダ内の「database.php」を開きましょう。
下の箇所を探してください。
'default' => env('DB_CONNECTION', 'mysql'),
この箇所でデータベースの種類を設定しています。
ここで出てくるのが「env」関数。
「env」関数の第二引数が「mysql」になっているか確認してください。
なっていなければ、「mysql」と書き換えましょう。
このenv関数は、第一引数が「.env」ファイルで設定した環境変数、第二引数がデフォルト値。
先ほど書き換えた「.env」ファイルの環境変数がここで使われるのです。
環境変数「DB_CONNECTION」には「mysql」を設定したのを思い出してください。
env関数は、第一引数の環境変数が「.env」ファイルで設定されていれば、その値を返し、環境変数が設定されていなければ、第二引数のデフォルト値を返します。
第一引数である環境変数「DB_CONNECTION」には「mysql」が設定されているはずです。
したがって、上記env関数は「mysql」を返すというわけです。
先にデフォルト値を「mysql」に書き換えたのは、万一環境変数が値取得できなかった時のためです。
これで、データベースの種類「default」値は「mysql」に設定されました。
データベースの設定をしよう
Laravelプロジェクト、「config」フォルダ内「database.php」には以下の箇所がありますので、探してみてください。
「mysql」の各種情報を設定している箇所です。
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'hoge'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', 'hoge'), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
先ほどのenv関数がここにも出てきて、データベースの設定を処理しています。
env関数が使われている箇所については、環境変数が設定できていれば、第一引数を返しますので、特に修正する必要はないでしょう。
ただ、「.env」ファイルの環境変数を使わずに、この「database.php」ファイルでデータベースの設定を処理することもできます。
env関数の第二引数の値を書き換えていけばよいのです。
しかし、その場合は第一引数の値を優先的に返しますので、「.env」ファイルの環境変数の値を削除する必要があります。
そうしないと「.env」ファイルの環境変数の値を優先的に返してしまいますので、注意が必要です。
心配であれば、「.env」ファイルと「database.php」ファイルの両方で同じ値を設定しておけば問題ないでしょう。
さて、env関数が使われている箇所以外の配列データについては確認が必要になります。
順番に確認していきましょう。
'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci',
MariaDB(MySQL)であれば、上記のように設定されているか確認してください。
ここではキャラクターエンコーディングを設定しています。
さらに、MariaDB(MySQL)であれば、下記のように設定されていれば特に問題ありません。
'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null,
まとめ
データベースの設定が終われば、次は対象のデータベース内にテーブルを作成していく工程です。
試しにマイグレーションしてみてください。
正常にテーブルが作成できていれば、データベースの設定は成功です。
仮にデータベース環境を移行する必要に迫られた場合でも、Laravelなら簡単に設定変更ができてしまいます。
これぞ、フレームワークの醍醐味といったところでしょうか。
最後まで、お付き合いいただき、ありがとうございました。