【问题标题】:Two database connection in one query in LaravelLaravel 一次查询中的两个数据库连接
【发布时间】:2025-11-25 17:50:01
【问题描述】:

我需要使用 INSERT INTO...SELECT 但在 Laravel 中使用两个不同的数据库。数据库 A 是本地数据库。数据库 B 是一个远程数据库。

我需要这样的东西:

INSERT INTO local.table1
SELECT * 
FROM remote.table1
ON DUPLICATE KEY UPDATE col1=col1

有什么方法可以在 laravel 中实现这一点吗?谢谢!

【问题讨论】:

  • 你想从本地选择行并将行插入到远程数据库中......我对吗?
  • 不,我想从远程选择行并插入到本地数据库@JigneshJoisar

标签: php database laravel connection


【解决方案1】:

你可以在 Laravel 中拥有多个数据库连接。关注this 发帖。

然后使用它:

<?php 

$selectQuery = \DB::connection('remote')
    ->table('table1')
    ->select('column1','column2','column3');

\DB::connection('local')->insert('INSERT INTO table1 (column1, column2, column3) ' . $selectQuery->toSql(), $selectQuery->getBindings());

【讨论】:

  • 这不起作用。似乎 selectQuery 使用“本地”而不是“远程”。我是否可能需要其他东西来完成这项工作?
  • 如果它的服务器完全不同,那么您需要使用federated 引擎创建一个表。