【Laravel・XAMPP】環境変数とデータベース設定について

初心者Laravelプログラマー

こんにちは、タクローです。

今回は、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なら簡単に設定変更ができてしまいます。

これぞ、フレームワークの醍醐味といったところでしょうか。

最後まで、お付き合いいただき、ありがとうございました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする