サーチ…
初期ステップ
データベース構成ファイル(おそらく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