その他

laravel-コードでDBの切り替えメモ

その他
この記事は約2分で読めます。

備忘録
新たに外部のDBに接続しなければならない状態になったのでメモ
現在ログイン中のユーザ名で、新規追加されるDBのアクセス権を持っていないという状態

接続設定

database.phpに新規で接続するDBの接続情報を記載

backend/config/database.php

'default' => 'mysql',

'mysql' => [
            'driver' => 'mysql',
            'url' => env('hoge'),
            etc...

//追加するDBの情報を追加
'mysql-2' => [
            'driver' => 'mysql',
            'url' => env('hoge'),
             etc...

コード上での切り替え

dafault設定のDBに接続してデータを取得するパターン

$hoge = DB::table('テーブル名')
->select('*')
->first(); 

追加したDBへ接続しデータを取得するパターン

$hoge2 = DB::connection('mysql-2') //新規DBに接続
->table('mysql-2のテーブル名')
->select('*')
->first();

DB::connectionで切り替えたあと、その変数の中では接続が切り替わったままになるため、別々のDBの値などを使いたい時などはそれぞれ変数に入れてから使う模様

$hoge = DB::table('animal')
->select('*')
->first(); 


$hoge2 = DB::connection('mysql-2')
->table('dog')
->where('pochi',$hoge->name) //新規DBのユーザに切り替わっているため、"animal.name"みたいに既存のDBを直接操作しようとしたらアクセス権限が無いと怒られる
->first();                   //対策として既存DBの必要なデータを変数として用意し使用する->$ho