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,
],
这里 customers 是 database1 而 customers2 是 database2
在控制器
中 $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 多数据库连接连接表的主要内容,如果未能解决你的问题,请参考以下文章