0

最近、Laravel 5.2を新規インストールして新しいプロジェクトを開始しましたが、データベースの構成に関係するいくつかのものとちょっと混乱します。私は自分のデータベースとしてsqliteを使用したいと思っていましたが、私は設定/データベースファイルを変更して 'デフォルト'の値をsqliteに設定してから、使用するdatabase.sqliteファイルを作成しなければならないという印象を受けましたそのデータベースのために。Laravel 5.2のデータベース構成

だから、私は次のように見えるために私のconfig /データベースファイルを変更:

return [ 

/* 
|-------------------------------------------------------------------------- 
| PDO Fetch Style 
|-------------------------------------------------------------------------- 
| 
| By default, database results will be returned as instances of the PHP 
| stdClass object; however, you may desire to retrieve records in an 
| array format for simplicity. Here you can tweak the fetch style. 
| 
*/ 

'fetch' => PDO::FETCH_CLASS, 

/* 
|-------------------------------------------------------------------------- 
| Default Database Connection Name 
|-------------------------------------------------------------------------- 
| 
| Here you may specify which of the database connections below you wish 
| to use as your default connection for all database work. Of course 
| you may use many connections at once using the Database library. 
| 
*/ 

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

/* 
|-------------------------------------------------------------------------- 
| Database Connections 
|-------------------------------------------------------------------------- 
| 
| Here are each of the database connections setup for your application. 
| Of course, examples of configuring each database platform that is 
| supported by Laravel is shown below to make development simple. 
| 
| 
| All database work in Laravel is done through the PHP PDO facilities 
| so make sure you have the driver for your particular database of 
| choice installed on your machine before you begin development. 
| 
*/ 

'connections' => [ 

    'sqlite' => [ 
     'driver' => 'sqlite', 
     'database' => database_path('database.sqlite'), 
     'prefix' => '', 
    ], 

    'mysql' => [ 
     'driver' => 'mysql', 
     'host' => env('DB_HOST', 'localhost'), 
     'port' => env('DB_PORT', '8889'), 
     'database' => env('DB_DATABASE', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
     'engine' => null, 
    ], 

    'pgsql' => [ 
     'driver' => 'pgsql', 
     'host' => env('DB_HOST', 'localhost'), 
     'port' => env('DB_PORT', '5432'), 
     'database' => env('DB_DATABASE', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'prefix' => '', 
     'schema' => 'public', 
    ], 

], 

/* 
|-------------------------------------------------------------------------- 
| Migration Repository Table 
|-------------------------------------------------------------------------- 
| 
| This table keeps track of all the migrations that have already run for 
| your application. Using this information, we can determine which of 
| the migrations on disk haven't actually been run in the database. 
| 
*/ 

'migrations' => 'migrations', 

/* 
|-------------------------------------------------------------------------- 
| Redis Databases 
|-------------------------------------------------------------------------- 
| 
| Redis is an open source, fast, and advanced key-value store that also 
| provides a richer set of commands than a typical key-value systems 
| such as APC or Memcached. Laravel makes it easy to dig right in. 
| 
*/ 

'redis' => [ 

    'cluster' => false, 

    'default' => [ 
     'host' => env('REDIS_HOST', 'localhost'), 
     'password' => env('REDIS_PASSWORD', null), 
     'port' => env('REDIS_PORT', 6379), 
     'database' => 0, 
    ], 

], 

]; 

これは、しかし、動作しませんでした。それは、私がしなければならなかったことは、DB_CONNECTIONがsqliteと等しくなるように.envファイルを変更することでした。そのファイルは現在次のように設定されています:

APP_ENV=local 
APP_DEBUG=true 
APP_KEY=base64:dUJjtQsUvjyT1zsHYDYVNUAHygIGMWj4Yu7N4CduAzg= 
APP_URL=http://localhost 

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

CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=sync 

REDIS_HOST=127.0.0.1 
REDIS_PASSWORD=null 
REDIS_PORT=6379 

MAIL_DRIVER=smtp 
MAIL_HOST=mailtrap.io 
MAIL_PORT=2525 
MAIL_USERNAME=null 
MAIL_PASSWORD=null 
MAIL_ENCRYPTION=null 

今、アプリケーションは正常に動作します。

私の質問は、env変数を変更しないと、config/databaseファイルの内容を変更する点は何でしょうか?何か不足していますか?

ありがとうございます!

答えて

4

.envファイルを変更して、変更をdatabase.phpファイルに反映させることです。

プロジェクトの誰かと共同作業を行い、コードを共有したい場合は、database.phpファイルも共有する必要があります。このため、公開する必要のないデータベースの資格情報がすべて含まれます。

これを防ぐため、.env変数を作成し、database.phpファイルで参照してください。したがって、コードをgithubまたは任意のリポジトリにプッシュする場合、.envファイルを無視するルールを設定できます。したがって、このファイルはバージョン管理下にはなく、他のすべての共同作業者間で共有されることはありません。

他のプロジェクトメンバーがリポジトリからコードを複製するときには、.envファイルを作成し、独自の資格情報を設定するだけです。このようにして、すべてのデータベース接続はdatabase.phpファイルで自動的に参照されます。

+0

ああ、私はそれが実際にどのように進むのかとは正反対に近づいていました。説明をありがとうございます。ですから、config /データベース内のenv()呼び出しは、env変数が.envで設定されていない場合のデフォルト値になる2番目のパラメータを持っていますか? – jldavis76

+0

はい、それは本当です。 –