请教 Laravel 关于触发事件中执行事务的问题
现在在做一个项目,需要用到触发事件机制,类结构大概如下:
//控制器需要对数据库修改使用事务处理
class CreateController
{
DB::beginTransaction();
$res = DB:::update($data)或create($data);
if($res===false){
DB::rollback();
return false;
}
//触发事件
event(new CreateOrder($order));
DB::commit();
}
//事件类和处理方法
class CreateOrdertNotification
{
public function __construct()
{
//
}
/**
* 处理事件
*/
public function handle(CreateOrder $event)
{
// 使用 $event->order 来访问 order .
//问题:触发事件后,这里需要对数据库进行修改,是否需要填写DB::beginTransaction(),DB::rollback(),DB::commit() 进行事务处理?否则是不是不需要填写或者需要用其他办法来可以保证事务一致?
}
}
现在问题来了,因为我在事件方法中也需要对数据库进行修改,如果需要保证事务的完整性,是否需要重新在触发的事件方法中,再完整地写DB::beginTransaction(),DB::rollback(),DB::commit()?
推荐文章: