如何使用Laravel Eloquent在不同服务器上的多个数据库之间执行Join查询?

SNa*_*aRe 6 php mysql join laravel laravel-5

这就是我们如何使用Laravel处理多个数据库连接,这是一个PHP框架而不是Python(对于谁来说这是一个重复的帖子)

<?php
return array(

    'default' => 'mysql',

    'connections' => array(

        # Our primary database connection
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'host1',
            'database'  => 'database1',
            'username'  => 'user1',
            'password'  => 'pass1'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        # Our secondary database connection
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'host2',
            'database'  => 'database2',
            'username'  => 'user2',
            'password'  => 'pass2'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);
Run Code Online (Sandbox Code Playgroud)

这就是您连接到此数据库的方式.

$user1 = User::on('mysql1')->where(/* ... */)->get()
$user2 = User::on('mysql2')->where(/* ... */)->get()
Run Code Online (Sandbox Code Playgroud)

这些只是SELECT查询.因此,Eloquent完美无缺.

但是,当我想在这两个数据库之间执行JOIN查询操作时,这似乎是不可能的.

aer*_*zov 0

基本上你不能使用 Eloquent ORM 或 Laravel 的查询构建器来做到这一点。

但是,您可以尝试使用原始表达式(https://github.com/laravel/framework/blob/8865d2276be94f0a3497ba3bd26c906ae9e91e1c/src/Illuminate/Database/Query/Expression.php#L13)或类似的东西,但你会编写代码从查询结果创建模型。

如果您使用 Laravel 4,这个问题会有所帮助:Laravel 4: how to run a raw SQL?