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:连接来自不同数据库的表的主要内容,如果未能解决你的问题,请参考以下文章

如何内部连接来自不同数据上下文的表? [复制]

连接来自两个不同数据库的表

Mysqli 连接来自 2 个不同数据库的表

SQL 查询连接来自不同 fdb 数据库的表

MariaDB 根据列值连接来自不同数据库的表

连接来自不同数据库的表的性能影响