初めてのLaravel 5.6 : (6) データベースの環境設定

Laravel で データベースの設定を行います。

関連ファイル

  • .env
  • config/database.php

.env

.env は開発環境やステージング環境、本番環境などで、環境毎に変更したい情報をまとめておくファイルです。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

KEY=VALUE 形式で記述して、VALUE を環境に応じて変更します。
git を使っている場合は、.envを .gitignore ファイルに追加して、管理対象から外します。

.gitignore

/vendor
/node_modules
.env

config/database.php

config/database.php はデータベースに関する設定を行うファイルです。

<?php

return [
    // ....

    '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,
        ],

        // ....
    ];
];

connections 配列でデータベース種類に応じて必要となる接続情報を定義します。Laravel では SQLite, MySQL, PostgreSQL, SQL Server に対応しています。

mysql の接続情報の定義箇所に env(‘DB_HOST’, ‘127.0.0.1’) とあります。これが .env ファイルを参照している箇所です。第1引数で .env ファイル内に定義してある KEY 指定し、その VALUE 値を取得します。第2引数はデフォルト値で、.env ファイルが無かったり、KEY が設定されていない時はデフォルト値を使います。

‘default’ => env(‘DB_CONNECTION’, ‘mysql’), とある箇所で Laravel で使用するデータベースを指定します。

.envファイル内で、DB_CONNECTION=sqlite とした場合は、.env 内の DB_DATABASE をコメントアウトして database.sqliteファイルを手動で作成する必要があります。

# .env

DB_CONNECTION=sqlite

# sqlite のデフォルト設定を使うのでコメントアウト
# DB_DATABASE=homestead
touch database/database.sqlite

DB接続確認

artisan migrate コマンドを使って、デフォルトで用意されているユーザーテーブルを作成します。

$ php artisan migrate

Migration table created successfully.
...

artisan tinker コマンドを実行して確認します。

$ php artisan tinker

Psy Shell v0.3.4 (PHP 5.6.2 — cli) by Justin Hilema
>>>

Userを検索してみます。

>>> App\User::all()->toArray();
=> []
>>>

エラー無く、問い合わせが完了しました。
上記の例はユーザが1件もない例ですが、DBへの問い合わせは上手く行っています。

コメントを残す