前提・実現したいこと
お世話になっております!
題名のとおりですが、Laravelで別々のDBのテーブルをクリビルダでjoinする方法があれば教えていただきたいです!よろしくお願い致します!
# config/database.php 'connections' => [ .... 'mysql_1' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'hoge'), 'username' => env('DB_USERNAME', 'hoge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], 'mysql_2' => [ 'driver' => 'mysql', 'host' => env('DB_HOST_OTHER', '127.0.0.1'), 'port' => env('DB_PORT_OTHER', '3306'), 'database' => env('DB_DATABASE_OTHER', 'hoge'), 'username' => env('DB_USERNAME_OTHER', 'hoge'), 'password' => env('DB_PASSWORD_OTHER', ''), 'unix_socket' => env('DB_SOCKET_OTHER', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ....
【mysql_1/users】
user_id | name |
---|---|
1 | てすと1 |
2 | てすと2 |
【mysql_2/favorites】
|favorite_id|user_id|name|
|:--:|:--:|]--:|
|1|1|映画|
|2|2|読書|
※テーブル構造はとりあえずこのままで
試したこと
DB::table(DB::raw('mysql_1.users AS user')) ->join(DB::raw('mysql_2.favorites AS favorite'),'user.user_id','=','favorite.user_id')
補足情報(FW/ツールのバージョンなど)
Laravel 8.7
php 7.4
追加
DB::select( DB::raw(" select x.user_id, x.name, y.name as favorite from mysql_1.users as x left join mysql_2.favorites as y on x.user_id = y.user_id ") );
回答1件