Laravel 5使用2个数据库连接联接2个表

时间:2018-06-22 07:05:11

标签: laravel laravel-5 eloquent query-builder

如何连接位于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,名称

2 个答案:

答案 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);
相关问题