У меня есть приложение, в котором пользователь владеет собственной БД. Я создаю запись сохранения, которая включает в себя отношения (поэтому две таблицы обновлены), и я хочу обернуть выполнение с DB::transaction()
. Единственная проблема заключается в том, что имя БД должно меняться от пользователя к пользователю.
$user->db_name
содержит ожидаемые данные и хорошо работает с другими запросами выбора.
Если я сделаю это, произойдет сбой с Call to a member function beginTransaction() on null
DB::disconnect(config('database.default'));
Config::set('database.connections.mysql.database', $user->db_name);
DB::beginTransaction();
try {
.
.
$data1->create();
$data2->create();
DB::commit();
} catch (\Exception $e) {
DB::rollback();
}
Если я сделаю это и вызову ошибку во втором операторе create, он сохранит запись в таблице с первого создания.
DB::beginTransaction();
try {
DB::disconnect(config('database.default'));
Config::set('database.connections.mysql.database', $user->db_name);
.
.
$data1->create();
$data2->create();
DB::commit();
} catch (\Exception $e) {
DB::rollback();
}
Как мне добиться изменения БД и транзакции с откатом при сбое в отношении БД пользователя? Спасибо