Laravelでデーターベースを使うための準備
最近Laravelを使ったWebサービスの開発に携わることになりました。
学習を始めたばかりなので、まとめがてらQiitaに書いていこうと思います。
今回は自分がLaravelを学習している過程で学んだデータベースを使うときの設定方法についてまとめました。
設定ファイルをいじる
これから扱うファイルはconfig/database.php
と.env
(隠しファイル)の2つである。
.env
は 開発環境と本番環境で使い分けるのでgitの管理下に置くべきでないファイルである。
Laravelで使用するDBの情報はconfig/database.php
で設定されている。
以下はそのファイルの一部である。今回はMySQLについて扱うので、それ以外の部分を省略して表示している。
<?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に関する環境変数は下記のようになっているはずだ。
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_DATABASE
、DB_USERNAME
、DB_PASSWORD
あたりも適宜書き換える。
ローカルのデータベース接続がうまくいかない時
自分はLaravelを初めてやるときにDBの接続がうまくいかなかったのですが、以下のようにしたらうまくいったのでメモ。
mysql.sockファイルを探す
ターミナルなどで以下を実行する
$ mysql_config --socket
/tmp/mysql.sock
この場合/tmp/mysql.sock
に mysql.sockがあるらしい。もしmysql.sockがなかったら自分で生成すればいいらしい。
.envに環境変数を追加する
DB_PASSWORD
の下あたりに以下の一行を追加しておく。
DB_SOCKET=/tmp/mysql.sock
自分の場合はこれでDBにうまく接続することができた。