这就是我们如何使用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' => '',
),
),
);
这就是你连接这个数据库的方式。
$user1 = User::on('mysql1')->where(/* ... */)->get()
$user2 = User::on('mysql2')->where(/* ... */)->get()
这些只是SELECT查询。因此,Eloquent完美无瑕地工作。
但是,当我想在这两个数据库之间执行 JOIN查询操作时,这似乎是不可能的。
答案 0 :(得分:1)
如果这两个数据库位于不同的服务器上,则无法执行此操作。至少不是简单的。我读到了storage engine。但我以前从未尝试过这样做。
<强> BUT 强>
如果数据库位于同一台服务器上,您可以通过简单的加入来实现,如果用户拥有正确的权限!
答案 1 :(得分:0)
基本上,您不能使用Eloquent ORM或Laravel的查询构建器来执行此操作。
但是,您可以尝试使用原始表达式(https://github.com/laravel/framework/blob/8865d2276be94f0a3497ba3bd26c906ae9e91e1c/src/Illuminate/Database/Query/Expression.php#L13)或smth,但是您必须编写代码以根据查询结果创建模型。
如果您使用laravel 4,此问题可以提供帮助:Laravel 4: how to run a raw SQL?
答案 2 :(得分:0)
编写原始查询并使用laravels DB方法来转义数据。
$results = DB::select( DB::raw("SELECT Users.id, Properties.name FROM [Database1].[dbo].[Users] join [Database2].[dbo].[Properties] on Users.id = Properties.user_id where [so].[dbo].[Users].id = :user_id"), array('user_id' => Input::get('user_id', -1)));
答案 3 :(得分:0)
您不能在不同的数据库服务器之间进行mysql连接,这是mysql的限制,与laravel或雄辩的语言无关。
您最好的选择是使用已有的2个不同的数据库连接,然后通过php代码合并并查询数据。