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への問い合わせは上手く行っています。