【问题标题】:Laravel, Should Events talk to Database?Laravel,事件应该与数据库对话吗?
【发布时间】:2016-07-21 23:59:28
【问题描述】:

我正在开发一个非常简单的照片画廊网站,用户可以在画廊中对他们最喜欢的照片进行投票。每次用户投票时,我都会设置一些事件,调用 VoteCase 事件,该事件接收投票对象。

VOTE 对象包括...

  • 照片ID
  • 选民编号

活动收到投票对象并发送照片所有者和电子邮件,说明他们的照片已被选中。有一个单独的 AppMailer.php 类用于发送电子邮件。

我的问题是,显然我需要查找照片属于谁(我已经有一个雄辩的关系($photo->user;

但这就是活动的工作吗?要进行数据库调用并检索要传递给 AppMailer 的用户对象?还是 AppMailer 类应该接收整个事件,然后用户自己查找?

还有其他一些与投票相关的活动。增加投票计数,给予投票用户信用并可能分配“徽章”等。其中每一个都可能有额外的数据库查找。所以知道放置它的最佳位置会很有帮助。

有人告诉我一个事件与 DTO 非常相似,但我对它们的经验是不存在的。

【问题讨论】:

    标签: php laravel event-handling dto laravel-events


    【解决方案1】:

    注意:这是我的意见,不是规则(也许不是最佳实践)

    是的,您可以在事件侦听器中进行数据库调用(假设您正在调用邮件程序)

    1. 这样,您的应用邮件程序类就不会与您的 ORM/DB 紧密耦合,并且具有 Single Responsibility

    2. 您正在事件侦听器中实施 ShouldQueue 以消除任何性能问题。 (你说得对吗?)

    【讨论】:

    • 是的,ShouldQueue 将在上线前实施!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多