php - 使用 PHP Laravel 2019 在 postgres 中加入来自不同数据库的 2 个或多个表
问题描述
在 postgres 中连接来自不同数据库的 2 个表的 Laravel 语法是什么?
例如:
database1 table column
join
database2 table column
解决方案
你可以这样做:
配置:
定义 config/database.php 多个数据库的连接:
'pg' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
...
];
'pg_2' => [
'driver' => 'pgsql',
'host' => env('DB_HOST_ONLINE', '127.0.0.1'),
'port' => env('DB_PORT_ONLINE', '3306'),
'database' => env('DB_DATABASE_ONLINE', 'forge'),
'username' => env('DB_USERNAME_ONLINE', 'forge'),
];
...
并在模型中设置连接:
class Model1 extends Model
{
protected $connection = 'pg';
}
class Model2 extends Model
{
protected $connection = 'pg_2';
}
用法:
您可以轻松地从不同的数据库中获取 Eloquent 或查询构建器:
Model2::join('database1_name.table AS table1', 'table1.id', '=', 'model2.table_id')
->where(...)
->select('model2.*', 'table1.column')
# OR
\DB::connection('pg_2')->table('model2')
->join('database1_name.table AS table1', 'table1.id', '=', 'model2.table_id')
->where(...)
->select('model2.*', 'table1.column')
推荐阅读
- javascript - Javascript:使用第二个数组中的值提取数组中的密钥对值
- python - 将现有标签附加到汤会导致尖括号变成 HTML 实体
- javascript - 如何防止在反应代码中添加空任务?
- python - ImportError:无法导入名称“MapWrapper”
- c++ - 为什么在 asio 的示例中,tcp 接受器模式使用 shared_pointer 模型包装堆套接字,而 udp 使用堆栈套接字?
- javascript - 将 vue-qrcode 编译成 razorlight 和 dinktopdf
- php - 分块显示大数据 - PHP
- angular - 延迟加载存在问题。我在子路由方面遇到了一些问题
- angular - 仅在以角度刷新页面后才会显示来自 api 的数据
- java - wifip2pManager.discoverPeers() 在 ANDROID 10 中失败,尽管使用了运行时权限并且也在清单中