サーチ…


初期ステップ

データベース構成ファイル(おそらくapp/config/database.php )内で、任意のタイプの複数のデータベース接続を定義できます。たとえば、2つのMySQLデータベースからデータを取得するには、それらを別々に定義します。

<?php
return array(

    'default' => 'mysql',

    'connections' => array(

        # Our primary database connection
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'host1',
            'database'  => 'database1',
            'username'  => 'user1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        # Our secondary database connection
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'host2',
            'database'  => 'database2',
            'username'  => 'user2',
            'password'  => 'pass2'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

デフォルトの接続はまだmysql設定されています。つまり、特に指定しない限り、アプリケーションはmysql接続を使用します。

スキーマビルダーの使用

スキーマビルダー内では、任意の接続でスキーマファサードを使用します。 connection()メソッドを実行して、使用する接続を指定します。

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id'):
});

DBクエリービルダーの使用

Schema Builderと同様に、Query Builderで接続定義します

$users = DB::connection('mysql2')->select(...);

Eloquentを使う

Eloquentモデルで使用する接続を定義する方法は複数あります。 1つの方法は、モデルに$ connection変数を設定することです。

<?php

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

接続は、実行時にsetConnectionメソッドを使用して定義することもできます。

<?php

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection('mysql2');

        $something = $someModel->find(1);

        return $something;
    }
}

Laravelのドキュメント

複数の接続が定義されている場合でも、個々の接続はDBファサードの接続方法でアクセスできます。 connection方法に渡されるnameは、 config/database.php設定ファイルにリストされている接続の1つに対応する必要があります。

$users = DB::connection('foo')->select(...);

rawは、接続インスタンスでgetPdoメソッドを使用してPDOインスタンスの基礎となるものにアクセスすることもできます。

$pdo = DB::connection()->getPdo();

https://laravel.com/docs/5.4/database#using-multiple-database-connections



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow