虽然我想知道是否有一种简单的方法来使用innoDB以与PDO相同的方式设置MySQL事务,或者我是否必须扩展它才能实现这一点,但雄辩的对象关系映射非常好用。
发布于 2013-02-27 14:44:18
您可以这样做:
DB::transaction(function() {
//
});
闭包中的所有内容都在一个事务中执行。如果发生异常,将自动回滚。
发布于 2014-02-19 05:19:57
如果你想使用Eloquent,你也可以使用这个
这只是我的项目中的示例代码
/*
* Saving Question
*/
$question = new Question;
$questionCategory = new QuestionCategory;
/*
* Insert new record for question
*/
$question->title = $title;
$question->user_id = Auth::user()->user_id;
$question->description = $description;
$question->time_post = date('Y-m-d H:i:s');
if(Input::has('expiredtime'))
$question->expired_time = Input::get('expiredtime');
$questionCategory->category_id = $category;
$questionCategory->time_added = date('Y-m-d H:i:s');
DB::transaction(function() use ($question, $questionCategory) {
$question->save();
/*
* insert new record for question category
*/
$questionCategory->question_id = $question->id;
$questionCategory->save();
});
发布于 2015-06-17 20:13:31
如果你想避免闭包,并且乐于使用外观,下面的方法可以让事情变得更好更干净:
try {
\DB::beginTransaction();
$user = \Auth::user();
$user->fill($request->all());
$user->push();
\DB::commit();
} catch (Throwable $e) {
\DB::rollback();
}
如果任何语句失败,commit将永远不会命中,事务也不会处理。
https://stackoverflow.com/questions/15105640
复制相似问题