2016-04-02 2 views
0

Я работаю над довольно простым сайтом для фотогалерей, пользователи имеют возможность голосовать за свою любимую фотографию в галерее. У меня есть настройки событий каждый раз, когда пользователь голосует, вызывается событие VoteCase, которое получает объект голосования.Laravel, должны ли события разговаривать с базой данных?

ГОЛОС объект состоит из ...

  • PHOTOID
  • voterID

событие получает объект голосов и отправляет владельцу фотографии и электронной почты, что их фото было выбрано. Для отправки электронной почты существует отдельный класс AppMailer.php.

Мой вопрос, очевидно, мне нужно, чтобы сделать поиск, чтобы увидеть, кто фото принадлежит (у меня уже есть красноречивое отношение к этому ($photo->user;)

Но что работа мероприятия? Для того, чтобы сделать вызов базы данных и получение объекта пользователя для перехода к AppMailer? Или должен ли класс AppMailer получать все событие и выполнять сам поиск пользователя?

Существует еще несколько событий, связанных с голосованием. с правом голоса для голосования и, возможно, с присвоением «значка» и т. д. Каждый из них может иметь дополнительные поисковые запросы БД. Поэтому знание лучшего места для его использования полезно.

Мне сказали, что событие очень похоже на DTO, но моего опыта с ними не существует.

ответ

0

Примечание: Это мое мнение не правило (возможно, не лучшая практика)

Да, это хорошо для вас, чтобы сделать DB вызов слушателя событий (предполагая, что тот, где вы вызываете ваша почтовая программа)

  1. Таким образом, ваш класс приложение почтовой программы не тесно связан с вашим ORM/DB и имеет Single Responsibility

  2. Вы реализующий ShouldQueue в вашем событии слушатель снятия изо что касается производительности. (Вы правы?)

+0

Yup ShouldQueue будет реализован перед тем, как отправиться жить! – dangel