例如,我有一个用户hasMany Books关系。
让我们采取这种情况。
我成功保存了User(父模型),但是保存其中一本Books(子模型)时出错。是否可以删除保存的父(仅在保存父和/或子时遇到错误)然后重定向到另一页?
实际上,我没有任何代码可提供。我目前正在计划如何构建代码,并且我已经想到了这个想法。
答案 0 :(得分:1)
是的,您可以手动将其删除。但是有更好的方法-改用事务(如果数据库支持)。使用事务的优点很多,但是对于您的情况,这2个最相关
DB::rollBack()
,就像从未执行过查询一样。这是laravel中基于事务的操作的基本结构
DB::beginTransaction(); // <-- first line
try{
// code ....
// saved User
// code ...
// saved Book
if($saved)
$childModelSaved = true;
else
$childModelSaved = false;
}
catch(Exception $e)
{
$childModelSaved = false;
}
if($childModelSaved)
{
DB::commit(); // YES --> finalize it
}
else
{
DB::rollBack(); // NO --> some error has occurred undo the whole thing
}