Как отправить почту нескольким выбранным пользователям

У меня есть таблица встреч, где я храню информацию о встрече и где я могу выбрать встречу между двумя типами пользователей пользователь типа посетителя и пользователь типа хоста. У меня много-много отношений между пользователями и собраниями, поэтому у меня есть сводная таблица meeting_user. Мне нужно отправить письмо всем выбранным пользователям для одной встречи.

Я пытаюсь отправить электронное письмо, используя это, но он сохраняет meeting_id в столбце notifiable_id базы данных. так как я могу сохранить users_id в столбце notifiable_id базы данных.

$meetings->save();

    $meetings->users()->attach($request->user_id);

    $users = Meeting::with('users')->get();
\Mail::to($user->send(New NewMeeting($meetings('id')));

Что хранит переменная $meetings? Одна встреча или несколько?

thisiskelvin 13.09.2018 15:18

@ thisiskelvin Одна встреча с несколькими пользователями.

Md. Abu Zaman 13.09.2018 15:20
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
76
1

Ответы 1

Существует два сценария, в которых вы можете отправить электронное письмо пользователям на собрание:

  1. Когда пользователь был добавлен на встречу
  2. При оповещении всех пользователей (массово) о встрече, к которой они были добавлены.

При отправке электронной почты только что добавленному пользователю

Если вы хотите отправить электронное письмо добавленным пользователям, вы можете сделать следующее:

...

$meeting = Meeting::find($meeting_id);

$user = User::find($request->user_id);

$meeting->users()->attach($user->id);

\Notification::send($user, new NewMeetingNotification($user));

Это должно быть добавлено в код который только добавляет пользователя к собранию, а не нескольких пользователей.

При отправке электронной почты всем пользователям на собрании одновременно

В случае, если вы хотите отправить пользователям сразу несколько электронных писем, после добавления всех пользователей вы можете сделать следующее.

...

$meeting = Meeting::with('users')->where('id', $meeting_id)->first();

$meeting->users()->each(function ($user, $key) {
    \Notification::send($user, new NewMeetingNotification($user));
});

$meeting_id - это встреча, о которой идет речь.

Уведомить пользователя (необязательно)

Если модель user имеет черту уведомляемый, вы можете изменить код на:

...

$meeting = Meeting::with('users')->where('id', $meeting_id)->first();

$meeting->users()->each(function ($user, $key) {
    $user->notify(new NewMeetingNotification($user));
});

Надеюсь, это поможет.

Здесь для первого раздела отображается ошибка \Notification::send($meeting->users, new NewMeetingNotification($meeting->users);syntax error, unexpected ';', expecting ',' or ')', а во втором сохраняется идентификатор сводной таблицы, а не user_id.

Md. Abu Zaman 13.09.2018 15:43

@ Md.AbuZaman Обновленный ответ на первую ошибку. Вы имели в виду вторую ошибку?

thisiskelvin 13.09.2018 15:45

@ Md.AbuZaman Можете ли вы обновить свой вопрос с помощью файла модели meetings, чтобы увидеть взаимосвязь

thisiskelvin 13.09.2018 15:47

В первом ответе отсутствовала скобка, но теперь она отправляет уведомления всем пользователям. но я хочу отправить уведомление только о встрече с новыми пользователями. И второй ответ - хранение pivot tbale id, а не user_id .

Md. Abu Zaman 13.09.2018 15:52

Я имею в виду, что когда я создаю встречу с 4 пользователями, я просто хочу отправить уведомления этим 4 пользователям.

Md. Abu Zaman 13.09.2018 15:53

@ Md.AbuZaman Я начинаю понимать. Второй ответ сделает это. Однако я предполагаю, что связь между meetings и users может быть неправильно установлена ​​на модели meeting? Не могли бы вы выложить свою модель meeting?

thisiskelvin 13.09.2018 15:56

@thisiskelvin Вот встреча с моделью public function users(){ return $this->belongsToMany('App\User', 'meeting_user'); }

Md. Abu Zaman 13.09.2018 15:59

Не могли бы вы перейти на return $this->belongsToMany('App\User', 'meeting_user', 'meeting_id, 'user_id'); и посмотреть, работает ли он. Я думаю, это может вызвать проблему, поскольку таблица должна быть meetings_users вместо meeting_user?

thisiskelvin 13.09.2018 16:02

@thisiskelvin Я заменил модель, но это ваш первый ответ, отправляющий уведомление всем пользователям.

Md. Abu Zaman 13.09.2018 16:16

@ Md.AbuZaman Сколько пользователей было создано при тестировании? Сколько было прикреплено к встрече и на сколько было отправлено электронное письмо?

thisiskelvin 13.09.2018 16:19

У меня уже есть пользователи. Когда я создаю встречу, я просто выбираю 2 пользователя посетителей и 3 пользователей типа хоста.

Md. Abu Zaman 15.09.2018 06:37

У меня 10 пользователей, и когда я создаю новую встречу с 4 пользователями, он отправляет уведомление всем 10 пользователям.

Md. Abu Zaman 15.09.2018 07:04

Пожалуйста, посмотрите эти изображения. drive.google.com/open?id=1JQKknmwNb7IdWFvVyaigFc-pr9MHKAkP

Md. Abu Zaman 15.09.2018 08:32

На данный момент, каждый раз, когда вы прикрепляете пользователя, он отправляет электронное письмо всем пользователям. Я предполагаю, что вы либо хотите отправить электронное письмо с вложением новому прикрепленному пользователю, либо хотите отправить электронное письмо всем пользователям в разное время. Мое предложение заключалось в том, чтобы либо разделить логин, который добавляет пользователя к собранию (а затем отправлять электронные письма на другом этапе массово), либо отправить только одно электронное письмо после того, как пользователь будет прикреплен.

thisiskelvin 15.09.2018 09:27

Я прикрепил пользователей, отобранных для каждой встречи. И мне просто нужно отправить этих прикрепленных пользователей только на эту встречу. Затем я снова создал еще одну встречу, затем она снова подключила этих новых пользователей, и мне просто нужно отправить им письмо. Но ваш код 2-3 раза рассылает почту одним и тем же пользователям.

Md. Abu Zaman 15.09.2018 10:12

Вы хотите отправлять электронные письма, когда пользователь добавляется к встрече, или все сразу?

thisiskelvin 15.09.2018 10:14

Я хочу отправлять почту, когда пользователи добавляются к собранию. Например, когда я создаю встречу и выбираю 4 пользователей для встречи, мне просто нужно отправить письмо этим 4 пользователям с этой информацией о встрече.

Md. Abu Zaman 15.09.2018 10:18

@ thisiskelvin Now it's showing Undefined variable: meeting_id

Md. Abu Zaman 15.09.2018 11:11

Я не знаю, почему вы снова передаете $ user в new NewMeetingNotification($user)

Md. Abu Zaman 15.09.2018 11:14

Meeting_id относится к идентификатору рассматриваемой встречи, вам нужно будет создать логику для его получения.

thisiskelvin 15.09.2018 11:17

$ user передается для использования сведений о пользователе (например, имени) в шаблоне электронной почты. Если вы хотите включить это в свое электронное письмо, проведите дополнительное исследование, в противном случае удалите его.

thisiskelvin 15.09.2018 11:18

Другие вопросы по теме