【问题标题】:How to join Multiple databases from different hosts in Laravel如何在 Laravel 中加入来自不同主机的多个数据库
【发布时间】:2022-01-13 09:33:33
【问题描述】:

有什么方法可以对来自不同服务器的多个数据库使用联接查询?

我的database.php

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'db1'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            ...
        ],

        'mysql2' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST_2', '192.233.****.*'),
            'port' => env('DB_PORT_2', '3306'),
            'database' => env('DB_DATABASE_2', 'db2'),
            'username' => env('DB_USERNAME_2', 'root'),
            'password' => env('DB_PASSWORD_2', ''),
         ...
        ]

我需要在连接查询中实现它。

我的控制器功能是

public function function1(){
$db1 = DB::connection('mysql2');
$result = TABLE1::join($db1 . '.' . 'table2', 'table2.id','=','table1.table2_id');

return Datatables::of($result);

}

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

简答:你不能正确地对它们进行分页。

为了能够使用服务器端分页,数据需要来自同一来源并实现分页。

您可能必须能够通过适当的分页显示结果的数据表的唯一解决方案是获取所有数据(使用集合对它们进行排序)并使用数据表在 JS 中分页。

另一种解决方案是使用两个具有传统服务器端分页的表格。

最复杂的解决方案和最好的解决方案(不使用复制)是使用Federated Storage engine,这就像在第二个数据库中拥有一个代表该表的表。这样,您只与一个数据库通信,它自己处理第二个数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2017-02-20
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2020-11-25
    相关资源
    最近更新 更多