我第一次尝试Laravel事务...我使用Eloquent进行大部分查询,因为那里没有事务,我必须混合使用Eloquent和查询构建器。
这是我的代码:
DB::beginTransaction();
try{
Setting::truncate();
Setting::insert($data);
DB::commit();
jok('all ok');
}
catch (\Exception $e)
{
DB::rollback();
jerror('some error accorded! ');
}
所以我已经绑定到向Settings添加一些无效数据了,我得到了some error accorded
错误,但是INSERT Setting::truncate();
之前的查询仍然执行了,最后我得到了一个空表。 / p>
所以要么我做错了,要么交易不能用于截断。
答案 0 :(得分:7)
DELETE FROM tblname
这将清除您的表并仍然保持事务的所需回滚功能。
请参阅TRUNCATE上的MySQL文档。要点解释了此功能http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html