gpt4 book ai didi

php - Yii2:是否可以使用 JOIN 同时查询 2 个数据库?

转载 作者:可可西里 更新时间:2023-11-01 08:29:55 25 4
gpt4 key购买 nike

我在 Yii2 上有项目。我有 2 个数据库。我需要像 join 一样执行命令

SELECT * FROM `table1` LEFT JOIN `table2` ON `table1`.`id` = `table2`.`id`;

..其中 table1 来自 db1table2 来自 db2。注意:db2 在另一台服务器上。

        'db1' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=db1',
'username' => '...',
'password' => '...',
'charset' => 'utf8',
],
'db2' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=anotherserver.com;dbname=db2',
'username' => '...',
'password' => '...',
'charset' => 'utf8',
]

Q1: 如何在干净的 mysql/php 上做到这一点?在 Yii2 上?.. 或者唯一的方法是分别从 table1table2 中获取结果,然后循环比较 id

Q2:如何在dataProvider中比较yii2中的id

$query = Table1::find();
$query2 = Table2::find();
// how compare id?

$dataProvider = new ActiveDataProvider([
'query' => $query,
]);

最佳答案

不可能在 MySQL 中的两个不同数据库之间执行 JOIN。然而,Yii 的 ActiveRecord 关系系统不使用 JOIN 来检索相关数据,而是使用单独的“IN”查询,这允许它跨不同数据库甚至不同 DBMS 类型检索关系数据。

class Table1 extends ActiveRecord {
public static function getDb()
{
return Yii::$app->db1;
}

public function getTable2()
{
return $this->hasMany(Table2::class, ['id' => 'id']);
}
}

class Table2 extends ActiveRecord {
public static function getDb()
{
return Yii::$app->db2;
}
}

$query = Table1::find()->with('table2');

关于php - Yii2:是否可以使用 JOIN 同时查询 2 个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com