Laravel 多数据库连接连接表

Posted

技术标签:

【中文标题】Laravel 多数据库连接连接表【英文标题】:Laravel Multi Database Connection Join table 【发布时间】:2017-04-11 17:44:34 【问题描述】:

数据库 1 = db1 数据库 2 = db2

我有两个数据库连接,我想运行一个连接connection1和connection 2表(db1.users和db2.users)的eloquent或DB,并检查connection1 id = connection 2与否。

有人可以指导我怎么做吗?

如果有人可以指导我该怎么做,我很感激。

db1 用户 ID 姓名 ori_id

db2 ori_user ID 名字

select db2.ori_user.name from db1.user join db1.user on db1.user.ori_id = db2.ori_user.id

【问题讨论】:

是的,我可以看到。那有什么地方可以连接来自不同数据库的两个表吗? 【参考方案1】:

database.php

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'customers'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

        'mysql2' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'customers2'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

这里 customersdatabase1customers2database2

控制器

 $data=DB::select('select customers2.ori_user.name from customers.user join customers2.ori_user on customers.user.ori_id = customers2.ori_user.id');

$data=DB::select('your_query');

Youtube 链接:https://www.youtube.com/watch?v=Kgl3FzqP1Ps&feature=youtu.be

【讨论】:

这只是连接两个相同的数据库表,是否可以使其从不同的数据库表连接。 哦,对不起,我的错误,我认为同一个数据库中有 2 个表。好吧,如果可以的话,我会尝试,我会提供给你 感谢您的快速响应,我已尝试过,但无法正常工作。你有其他方法吗? 你得到的错误是什么?可以分享吗?? 你可以看看这个视频youtube.com/watch?v=Kgl3FzqP1Ps&feature=youtu.be【参考方案2】:

是的,只要它们在同一台服务器上就可以,例如:

$result = \DB::table('db1.users')
    ->join('db2.users', 'db2.users.id', '=', 'db1.users.id')
    ->select('db1.users.id as db1_id', 'db1.users.email as db1_email', 'db2.users.*')
    ->get();

确保用户有权使用这两个数据库。

【讨论】:

OP 要求两个独立的数据库。 是的,我对此很担心,并准确地回答了这个问题。您甚至检查过我的答案还是不明白?

以上是关于Laravel 多数据库连接连接表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Lumen 雄辩的左连接返回连接表数据而不是主数据

连接查询以获取多个数据到 laravel 中的数据表

如何指定Laravel用于迁移表的数据库连接?

PHP Laravel框架 多数据库连接方法

laravel 使用 in 子句模型名称连接多态数据透视表

如何使用 Laravel 将两个表与数据透视表连接起来?