如何连接位于2个不同服务器上的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' => false,
'engine' => null,
'options' => [
\PDO::ATTR_EMULATE_PREPARES => true
]
],
'mysql2' => [
'driver' => 'mysql',
'host' => '132.133.22.9',
'port' => '3306',
'database' => 'contracts',
'username' => 'asdsdsa',
'password' => 'asdsad',
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
'options' => [
\PDO::ATTR_EMULATE_PREPARES => true
]
],
我只能访问一个像DB::connection('mysql')->table('elements')->get();
如何在两个不同服务器上的两个表中使用leftJoin?
让我说:
元素(服务器1): id,class_id
类(服务器2) ID,名称
答案 0 :(得分:1)
您可以使用
数据库一(测试)包括元素表,数据库二(test2)包括类表。
$result= DB::table('elements')
->leftjoin('test2.classes', 'elements.class_id', '=', 'classes.id')
->get();
dd($result);
您实际上不需要指定第一个数据库连接。默认情况下。
答案 1 :(得分:0)
测试:
例如,我有两个数据库和一个连接:
数据库一(测试)包括elements
表,数据库二(测试2)包括classes
表。
$result= DB::connection('mysql')->table('elements')
->join('test2.classes', 'elements.class_id', '=', 'classes.id')
->get();
dd($result);