您好我的数据库中有两个表:
当我添加新用户时,数据也会保存到user_profile表中。我正在考虑一种情况,由于某种原因,数据能够保存到用户表而不是user_profile表。
我希望删除users表中的数据以避免任何损坏的记录,因为我的user和user_profile表彼此依赖。
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
您可以使用database transactions。最简单的使用方法是
DB::transaction(function()
{
// Do something that alters 'users' table
// Do something that alters 'user_profiles' table
});
如果上述任何操作失败(抛出异常),则所有操作都将被取消,您的数据库将不受影响。如果您需要对事务进行更多控制,可以执行此操作
try {
DB::beginTransaction();
// Do something that alters 'users' table
// Do something that alters 'user_profiles' table
if($somethingWentWrong)
throw new Exception('something went wrong');
// Everything OK
DB::commit();
} catch (\PDOException $e) {
// something went wrong with the database
DB::rollBack();
} catch (\Exception $e) {
// something went wrong
DB::rollBack();
}