#php #mysql #laravel #multi-tenant
#php #mysql #laravel #многопользовательский
Вопрос:
Описание
Есть ли какой-либо способ переключить среду БД в модуле Stancl / Tenancy? Поскольку я ранее работал с некоторыми другими модулями аренды, я использую для переключения среды, когда я хочу получить доступ к некоторым ресурсам из центрального домена внутри арендаторов и наоборот.
Почему это должно быть добавлено
Я пытался получить планы и функции для арендаторов и хочу получить дополнительные данные из центрального домена (DB). например, я назвал таблицу подписок и планов как для арендаторов, так и для центральных пользователей, когда я пытаюсь получить подписку пользователя-арендатора из центрального домена, он возвращает данные из базы данных арендатора.
namespace AppHelpers;
use AppModelsSystemAdminSubscription;
public static function checkTenantPlan()
{
// Find the tenant
// get the tenantId and find that
$tenant_user_id = tenant()->user_id;
// Find the subscription of the tenant User
$subscription = Subscription::where('user_id', $tenant_user_id)
->orderBy('created_at', 'desc')
->first();
return $subscription->plan(); //returning the data from the current tenant db
}
Комментарии:
1. Находятся ли базы данных арендатора и ваша база данных центрального домена на одном сервере MySQL?
2. Да, посмотрите документы stancl / tenancy для получения дополнительной информации.
Ответ №1:
Это было исправлено в новой версии. https://github.com/stancl/tenancy/releases/tag/v3.3.0
$tenant->run(function ($tenant) {
return User::all();
});
tenancy()->central(function ($tenant) {
return User::all();
});
Комментарии:
1. Это работает для
central domain
, но не для арендатора. Я получаю сообщение об ошибке"Database connection [tenant] not configured."
, есть идеи?2. Вы пытаетесь получить данные внутри арендатора или центрального уровня?