首页 > 解决方案 > Laravel 5 使用 2 个数据库连接加入 2 个表

问题描述

如何加入位于 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 用于两个不同服务器上的两个表?

假设我有:

元素(server1): id,class_id

类 (server2) id、名称

标签: laravellaravel-5eloquentquery-builder

解决方案


您可以使用

数据库一(测试)包括元素表和数据库二(测试2)包括类表。

$result= DB::table('elements')
    ->leftjoin('test2.classes', 'elements.class_id', '=', 'classes.id')
    ->get();
dd($result);

你真的不需要指定第一个数据库连接。默认情况下。


推荐阅读