在Laravel 5.3上的不同数据库中雄辩地加入和查询

时间:2016-11-30 17:34:13

标签: php mysql database laravel eloquent

如何在Laravel中从两个不同的数据库中运行这个简单的Mysql查询?

SELECT * FROM database1.table1, database2.table2

我是如何在不同的数据库中加入Eloquent的?

2 个答案:

答案 0 :(得分:3)

您不能使用不同的连接来执行此操作,因此您应该执行以下操作:

$result = DB::connection('database1')->table('contacts')->get()
            ->union(
                DB::connection('database2')->table('contacts')->get()
            );

如果您的查询构建器不返回集合:

$result = collect(DB::connection('database1')->table('contacts')->get())
            ->union(
                collect(DB::connection('database2')->table('contacts')->get())
            );

答案 1 :(得分:3)

正如我所提到的,如果数据库位于同一台服务器上并且mysql用户可以访问这两个数据库,则可以使用DB::raw传递表:

$q1 = DB::table(DB::raw('database1.table1 AS db1_tb1'))->select('*');
$results = DB::table(DB::raw('database2.table2 AS db2_tb2'))->select('*')
->union($q1)
->get();

对于加入:

DB::table(DB::raw('database1.table1 AS db1_tb1'))
   ->join(DB::raw('database2.table2 AS db2_tb2'),'db1_tb1.first_key','=','db2_tb2.second_key')