У меня есть сайт социальной сети, использующий Laravel. Моя система уведомлений работает хорошо, когда уведомление настроено для конкретного пользователя. Но предположим, что пользователь стал модератором, и я хочу уведомить всех пользователей об этом событии. Есть ли способ сделать это, не вставляя одно и то же уведомление всем пользователям?
Одно решение, которое пришло мне в голову, это
Я думаю о настройке уведомления Идентификатор пользователя в 0 который указывает, что это для всех пользователей, и, кстати, я не хочу, чтобы свойство read_at в этом виде уведомлений, поэтому нет необходимости в другой таблице с FK, так что, если это может быть решением, то как его вставить и как получить их по уведомлению пользователя
Если вы хотите уведомить многих пользователей, вы можете использовать для всех пользователей очереди.
В случае, если вы хотите отправить сразу несколько писем, используйте один из доступных пакетов которые используют API почтовой службы напрямую для отправки кусков электронной почты, а не для отправки их по одному.
Если вы хотите передать событие всем текущим пользователям, которые используют ваше приложение, используйте Laravel Broadcasting особенность для этого. То, что вы хотите, это использовать публичный канал.
События транслируются по «каналам», которые могут быть определены как публичные или частные. Любой посетитель вашего приложения может подписаться на общедоступный канал без какой-либо аутентификации или авторизации.
У меня была та же проблема, что и у вас, и я использовал тот же подход user_id
0
, чтобы обозначить это для всех последователей. Только одно уведомление вставляется только с данными, и была настроена дополнительная таблица вложенных уведомлений для хранения ссылки на идентификатор уведомления для каждого подписчика без повторения данных.
Проверьте полное решение здесь: Laravel 5.3 — Единое уведомление для коллекции пользователей (подписчики)