gpt4 book ai didi

php - 如何查询所有的 Multi-Tenancy 数据库?

转载 作者:行者123 更新时间:2023-11-29 07:30:58 24 4
gpt4 key购买 nike

我正在使用 hyn/laravel-tenancy 包,它为每个客户生成单独的表。在管理面板中,我希望能够访问所有客户数据库中的数据。在官方文档中找不到解决方案,也找不到好的做法,所以想出了这个:

    $users = DB::table('users'); //System connection

foreach (Website::all() as $w) {

// for each tenant
// setup a temporary connection

config([
'database.connections.' . $w->uuid => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => $w->uuid,
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
]
]);

$w_connection = DB::connection($w->uuid)->table('users');

$users = $users->unionAll($w_connection);
}

return $users->get();

现在我只有一张租户表,一个用户在系统表中,一个在租户表中。结果我两次获得用户表单系统表。

最佳答案

好的,看来您不能合并来自两个不同连接的查询。但我在 this post 中找到了解决方案.

    $users = DB::table('tenancy2.users');

foreach (Website::all() as $w) {
$tenant_users = DB::table($w->uuid . '.users');
$users = $users->union($tenant_users);
}

return $users->get();

显然,如果在表之前指定 DB,则可以使用连接来访问未在该特定连接中指定的 DB。

关于php - 如何查询所有的 Multi-Tenancy 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51303327/

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