Laravel 4:连接来自不同数据库的表
Posted
技术标签:
【中文标题】Laravel 4:连接来自不同数据库的表【英文标题】:Laravel 4: Join tables from different database 【发布时间】:2014-02-26 10:56:15 【问题描述】:我有一个连接不同数据库的项目,我想使用 laravel 4 连接来自不同数据库的这些表。我已经搜索过这个问题,但我找不到正确的答案。是否可以在 laravel 4 中连接来自不同数据库的表?如果可能的话,有没有人可以帮助我如何建立一个查询?
【问题讨论】:
你确定不是不同的表?您不能从不同的数据库加入。这只是一个 SQL 限制。 是的,我确定。我找到了这个查询SELECT u1.* FROM database1.users u1 LEFT JOIN database2.users u2 ON u1.id=u2.id WHERE u2.id IS NOT NULL;
但不是在 laravel 4 中。我想使用 laravel 4 尝试这个查询。
【参考方案1】:
您完全可以使用DB class:
$results = DB::select('select * from database1.users u1 LEFT JOIN database2.users u2 ON u1.id = u2.id WHERE u2.id = ?', array(5));
您还可以使用Fluent 来构建查询,如下所示:
$users = DB::table('db1.users as db1')
->select('db1.*')
->leftJoin('db2.users as db2', 'db1.id', '=', 'db2.id')
->where('db2.id', 5)
->get();
【讨论】:
Morgon,我还有一个问题,我应该从哪里获取database1、database2等?我知道,我只是在配置文件中设置数据库信息,但是我如何声明或调用某个数据库? 在这种情况下,这将是 mysql 中数据库的名称。如果您的 Laravel 项目的数据库称为“laravel”,并且您在另一个名为“lookup”的数据库中有数据,那么您只需将“database1”和“database2”替换为这些值,假设您的 MySQL 用户可以访问这两个数据库. 嗨,Morgon,感谢您的帮助。我测试了查询,它可以工作!以上是关于Laravel 4:连接来自不同数据库的表的主要内容,如果未能解决你的问题,请参考以下文章