2017-09-05 52 views
3

これは、Laravelのデータベース分割設定の推奨規則です。Laravelでの読み取り/書き込みデータベース設定の分割方法は?

'mysql' => [ 
    'read' => [ 
        'host' => '192.168.1.1', 
       ], 
    'write' => [ 
        'host' => '196.168.1.2' 
       ], 
     'sticky' => true, 
     'driver' => 'mysql', 
     'database' => 'database', 
     'username' => 'root', 
     'password' => '', 
     'charset' => 'utf8mb4', 
     'collation' => 'utf8mb4_unicode_ci', 
     'prefix' => '', 
    ], 

DB_NAME、USER_ID、PASSなどの異なるアクセス情報を各読み取り/書き込みデータベースに使用するにはどうしたらいいですか?ありがとうございました。

+0

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

答えて

1

あなたは法に使用して雄弁との接続を指定し、その後2つの接続を作成することができます。

'mysql' => [ 
      'driver' => 'mysql', 
      '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' => '', 
      'strict' => true, 
      'engine' => null, 
     ], 
'mysql2' => [ 
      'driver' => 'mysql', 
      'host' => env('DB_HOST2', '127.0.0.1'), 
      'port' => env('DB_PORT2', '3306'), 
      'database' => env('DB_DATABASE2', 'forge'), 
      'username' => env('DB_USERNAME2', 'forge'), 
      'password' => env('DB_PASSWORD2', ''), 
      'unix_socket' => env('DB_SOCKET2', ''), 
      'charset' => 'utf8mb4', 
      'collation' => 'utf8mb4_unicode_ci', 
      'prefix' => '', 
      'strict' => true, 
      'engine' => null, 
     ], 


User::on('mysql2')->where('id', $id)->update($data); 


またはクエリビルダを使用して:

DB::connection('mysql2')->table('users')->where('id', $id)->update($data); 
+0

ありがとうございます。 @leyduana。 :) ちなみに、Aテーブルからデータを読み込んで既存のBテーブルのデータグループとIDで結合するクエリを作成する方法は? – Magnetic

1

あなたは、このように別のdb conecctionを宣言することができます。

DB2_PORT=3306 
DB2_DATABASE=db2 
DB2_USERNAME=somename 
DB2_PASSWORD=somepass 

をそして、あなたはこのようにそれを使用することができます:

'mysql' => [ 
    'read' => [ 
        'host' => '192.168.1.1', 
       ], 
    'write' => [ 
        'host' => '192.168.1.1' 
       ], 
     'sticky' => true, 
     'driver' => 'mysql', 
     'database' => 'database', 
     'username' => 'root', 
     'password' => '', 
     'charset' => 'utf8mb4', 
     'collation' => 'utf8mb4_unicode_ci', 
     'prefix' => '', 
], 

'writecon' => [ 
    'read' => [ 
     'host' => '196.168.1.2', 
    ], 
    'write' => [ 
     'host' => '196.168.1.2' 
    ], 
    'driver' => 'mysql', 
    'port' => env('DB2_PORT', '3306'), 
    'database' => env('DB2_DATABASE', 'db2'), 
    'username' => env('DB2_USERNAME', 'somename'), 
    'password' => env('DB2_PASSWORD', 'somepass'), 
    'charset' => 'utf8mb4', 
    'collation' => 'utf8mb4_unicode_ci', 
    'prefix' => '', 
], 

次に、あなたの.envに追加

$someModel->setConnection('writecon'); 
$someModel->save(); 

ありませんあなたはそれを試すことができます。

関連する問題