Как использовать проверку работоспособности с мультитенантной конфигурацией в Laravel? - PullRequest
0 голосов
/ 15 мая 2018

Я сделал мультитенантное приложение Laravel, которое в основном работает.

Последняя проблема с конфигурацией, которая у меня возникла, касается проверки.

Если я сделаю следующее, как указано в документах :

$validatedData = $request->validate([
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
]);

Я получу следующую ошибку:

"SQLSTATE [42S02]: базовая таблица или представление не найдено: 1146 Таблица 'master.posts' не существует

, что верно, потому что «master» относится к основной базе данных, а не к арендатору.

Как настроить проверку базы данных клиентов?

Ниже мое Мультитенантное промежуточное ПО:

public function handle($request, Closure $next)
{
    $tenant_db = Auth::user()->tenant_db;
    Config::set('database.connections.tenant_mysql.database', $tenant_db);

    return $next($request);
}

1 Ответ

0 голосов
/ 15 мая 2018

Правило unique позволяет указать соединение, используемое при проверке уникальности.

С Документы :

Настраиваемое подключение к базе данных

Иногда вам может понадобиться установить пользовательское соединение для базы данных запросы, сделанные валидатором. Как видно выше, установка unique:users как правило проверки будет использовать соединение с базой данных по умолчанию для запроса база данных. Чтобы переопределить это, укажите соединение и таблицу имя с использованием синтаксиса "точка":

'email' => 'unique:connection.users,email_address'

Таким образом, в вашем случае ваши правила проверки изменятся на:

'title' => 'required|unique:tenant_mysql.posts|max:255',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...