我正在一个非常简单的照片画廊网站上工作,用户可以在画廊中对自己喜欢的照片进行投票。每次用户投票时都会设置一些事件,调用VoteCase事件,接收投票对象。
VOTE 对象包含...
活动收到投票对象并发送照片所有者和电子邮件,说明他们的照片已被选中。有一个单独的AppMailer.php类用于发送电子邮件。
我的问题是,显然我需要进行查找以查看照片属于谁(我已经有了一个雄辩的关系($photo->user;
)
但这是活动的工作吗?要进行数据库调用并检索用户对象以传递给AppMailer?或者AppMailer类应该接收整个事件,还是自己进行用户查找?
还有一些与投票相关的其他事件。增加投票数,给予投票用户信用,并可能分配一个"徽章"其中每个都可能有额外的数据库查找。所以知道放置它的最佳位置是有帮助的。
我被告知事件与DTO非常相似,但我对它们的体验并不存在。
答案 0 :(得分:0)
注意:这是我认为不是规则(可能不是最佳做法)
是的,您可以在事件监听器中进行数据库调用(假设您正在调用邮件程序)
这样您的应用邮件程序类就没有与您的ORM / DB紧密耦合,并且有一个Single Responsibility
您正在事件侦听器中实现ShouldQueue,以消除任何性能问题。 (你是对的?)