公式ドキュメントにやり方が記載されてなかったので。
設定ファイルを追加する
config/database.php
を新規作成してください。
以下のような構成になるはずです。
.
├── app
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
│ └── database.php
├── database
├── phpunit.xml
├── public
├── readme.md
├── resources
├── routes
├── storage
├── tests
└── vendor
設定ファイルの記載
config/database.php
の connections
配列に接続先を追加します。
<?php
return [
'default' => 'db1',
'migrations' => 'migrations',
'connections' => [
'db1' => [
'driver' => env('DB_CONNECTION'),
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
'db2' => [
'driver' => env('DB2_CONNECTION'),
'host' => env('DB2_HOST'),
'port' => env('DB2_PORT'),
'database' => env('DB2_DATABASE'),
'username' => env('DB2_USERNAME'),
'password' => env('DB2_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
],
];
default
は明示的に指定していない時に読みに行くDBの向き先で、
migrations
は設定されていないと artisan migrate 時にエラーがでます。
.envファイルの修正
.env
ファイルに接続先の情報を記録する定数を追加します。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db1
DB_USERNAME=
DB_PASSWORD=
DB2_CONNECTION=mysql
DB2_HOST=127.0.0.1
DB2_PORT=3306
DB2_DATABASE=db2
DB2_USERNAME=
DB2_PASSWORD=
※上記の接続情報は適当ですので、環境に合わせて適切に設定してください
利用方法
デフォルトだと config/database.php
の default
で指定された向き先のDBに繋がるので、
異なるDBにアクセスしたい際は、明示的に指定してやる必要があります。
Eloquent側に接続情報を記載するやり方
<?php
class Hoge extends Model {
protected $connection = 'db2';
}
実行時に接続情報を定義するやり方
<?php
class ExampleController extends Controller {
public function fooMethod()
{
$foo = new Foo;
$foo->setConnection('db2');
$data = $foo->find(1);
return $data;
}
}
クエリビルダで指定するやり方
$users = DB::connection('db2')->select(...);
結論
Laravelのやり方とほぼ同じでした