我有一个应用程序,用户拥有自己的数据库。我正在创建一个包含关系的记录保存(因此更新了两个表),我想用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();
}
如果我这样做并在第二个创建语句上强制失败,它会将第一次创建的记录保留在表中。
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();
}
如何在针对用户数据库的故障回滚的情况下实现数据库更改和事务?谢谢