LARAVEL如何连接2个不同的数据库并加入2个位于不同服务器上的表?
问题描述:
我有2个不同的数据库,我想在这些数据库内部连接2个表。LARAVEL如何连接2个不同的数据库并加入2个位于不同服务器上的表?
我知道这不是最好的做法,但我需要找到一种方法来与LARAVEL做到这一点。
我可以通过打开2个连接与普通PHP做到这一点。但我正在寻找与laravel做到这一点的方式。
$ users = DB :: connection('mysql2') - > select(...);'
添加另一个连接是解决方案,但如何在两个不同的服务器中使用两个数据库进行一次内部连接查询?
答
由于我形象你正在与不同的实体工作,只需通过定义连接的名称protected $connection
属性指定他们在模型中每个人的连接。
您可以通过在config/database.php
中定义它来创建新连接。
像这样:
class Model_One extends Entity
{
protected $connection = "database_one";
[...]
class Model_Two extends Entity
{
protected $connection = "database_two";
[...]
'connections' => [
'database_one' => [
'driver' => 'mysql',
'host' => env('DB_ONE_HOST', 'host_one'),
'port' => env('DB_ONE_PORT', 3306),
'database' => env('DB_ONE_DATABASE', 'database_one'),
'username' => env('DB_ONE_USERNAME', 'username'),
'password' => env('DB_ONE_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => env('DB_ONE_PREFIX', ''),
'timezone' => env('DB_ONE_TIMEZONE', '+00:00'),
'strict' => false,
],
'database_two' => [
'driver' => 'mysql',
'host' => env('DB_TWO_HOST', 'host_two'),
'port' => env('DB_TWO_PORT', 3306),
'database' => env('DB_TWO_DATABASE', 'database_two'),
'username' => env('DB_TWO_USERNAME', 'homestead'),
'password' => env('DB_TWO_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => env('DB_TWO_PREFIX', ''),
'timezone' => env('DB_TWO_TIMEZONE', '+00:00'),
'strict' => false,
]
],
+0
我没有问如何设置,关于如何使用2数据库制作ELOQUENT QUERY,并与table_id结合。 –
简单。你不能 – e4c5