首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 5.3 - Laravel DB事务和通知在事务失败时发送电子邮件?

Laravel 5.3 - Laravel DB事务和通知在事务失败时发送电子邮件?
EN

Stack Overflow用户
提问于 2017-03-26 05:00:59
回答 1查看 792关注 0票数 1

使用下面的事务,我触发了一个事件,它运行事件下面列出的两个侦听器。问题是,当第一个事件AddQuestionToQuestionsTable由于任何原因失败时,DB数据会因为DB::rollback而正确回滚,但我在第二个侦听器QuestionAddedNotificationSend中设置并触发的早期通知电子邮件会被发送出去,而不管错误是否存在。

如果事务中存在错误,我们将不想发送电子邮件。注意:我可能会添加额外的监听程序,这些监听程序也会插入到DB中,因此我需要知道如何在事务成功时才能发出电子邮件。

代码语言:javascript
运行
复制
DB::beginTransaction();

try {
    event(new LaravelQuestionPosted($question, $user));
    // Listeners: AddQuestionToQuestionsTable
    // Listeners: QuestionAddedNotificationSend
} catch (\Exception $e) {
    DB::rollback();
    // something went wrong
}

DB::commit();

有人知道如何让它按预期工作吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-26 06:39:58

在使用event()调度事件时,可以将true作为第三个参数传递,以便在任何处理程序返回非空值或引发异常时停止侦听处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43021901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档