1
1

More than 3 years have passed since last update.

Laravel で使うデータベースの設定

Last updated at Posted at 2019-12-25

Laravelでデーターベースを使うための準備

最近Laravelを使ったWebサービスの開発に携わることになりました。
学習を始めたばかりなので、まとめがてらQiitaに書いていこうと思います。

今回は自分がLaravelを学習している過程で学んだデータベースを使うときの設定方法についてまとめました。

設定ファイルをいじる

これから扱うファイルはconfig/database.php.env(隠しファイル)の2つである。
.envは 開発環境と本番環境で使い分けるのでgitの管理下に置くべきでないファイルである。

Laravelで使用するDBの情報はconfig/database.phpで設定されている。
以下はそのファイルの一部である。今回はMySQLについて扱うので、それ以外の部分を省略して表示している。

config/database.php
<?php

return [
  'default' => env('DB_CONNECTION', 'mysql'),

  'connections' => [

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            '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' => '',
            '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ファイルから値を読み込んでいる。
ヘルパ関数はLaravelで定義されている関数のことである。
env(A,B)は.envファイルないのAという環境変数を参照し、もしそれが存在しなかったらBを返す。したがって以下の場合であれば、.envファイルの環境変数DB_CONNECTIONを参照し、それが存在しなければmysqlをデフォルトのデータベースとして用いる。

    'default' => env('DB_CONNECTION', 'mysql'),

Laravelがデフォルトで生成した.envではDBに関する環境変数は下記のようになっているはずだ。

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

MySQL以外のDBを使う場合はDB_CONNECTIONを適切なものに書き換える必要がある。
他のDB_DATABASEDB_USERNAMEDB_PASSWORDあたりも適宜書き換える。

ローカルのデータベース接続がうまくいかない時

自分はLaravelを初めてやるときにDBの接続がうまくいかなかったのですが、以下のようにしたらうまくいったのでメモ。

mysql.sockファイルを探す

ターミナルなどで以下を実行する

$ mysql_config --socket
/tmp/mysql.sock

この場合/tmp/mysql.sockに mysql.sockがあるらしい。もしmysql.sockがなかったら自分で生成すればいいらしい。

.envに環境変数を追加する

DB_PASSWORDの下あたりに以下の一行を追加しておく。

.env
DB_SOCKET=/tmp/mysql.sock

自分の場合はこれでDBにうまく接続することができた。

参考にした記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1