Laravel,活动应该与数据库交谈吗?

时间:2016-04-02 03:32:18

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

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

VOTE 对象包含...

  • PHOTOID
  • voterID

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

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

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

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

我被告知事件与DTO非常相似,但我对它们的体验并不存在。

1 个答案:

答案 0 :(得分:0)

注意:这是我认为不是规则(可能不是最佳做法)

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

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

  2. 您正在事件侦听器中实现ShouldQueue,以消除任何性能问题。 (你是对的?)

相关问题