Ежедневная электронная почта Laravel отправляет нескольких пользователей с расписанием

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

foreach($advisors as $advisor) {
    $receivers = [];
    foreach($advisor->clients as $client) {
        array_push($receivers, $client);
    }
    array_push($receivers, $advisor);

    if (count($receivers) > 0) {
        Notification::send($receivers, new DailyEmail($advisor));
    }
}

прежде чем я кодирую, как показано ниже.

foreach($advisors as $advisor) {
    $receivers = [];
    foreach($advisor->clients as $client) {
         array_push($receivers, $client);
    }

    if (count($receivers) > 0) {
         Notification::send($receivers, new DailyEmail($advisor));
    }
    Notification::send($advisor, new DailyEmail($advisor));
}

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

Я не могу понять, почему это работает иначе. Объясните, пожалуйста.

Что делает DailyEmail? Как вы работаете с объектом $ Advisor? Похоже, у советника много клиентов. Чего я не понимаю, так это того, почему вы нажимаете и то, и другое в плоском массиве. Просто проверьте, есть ли у $advisor клиенты, и обработайте их оттуда. Нет необходимости в array_push()

Dimitri Mostrey 29.09.2018 07:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
161
1

Ответы 1

«Старый» код запускал событие Notification :: send дважды, один раз для получателей и один раз для советника.

Ваш «новый» код запускает его только один раз для получателей, поэтому советник не получает уведомление по электронной почте.

Возможно, я неправильно понимаю ваш код из-за отсутствия дополнительной информации, но если вы хотите отправить уведомление клиентам $ advor->, вам не нужно их зацикливать и создавать новый массив, на самом деле Notification :: send ожидает коллекция

Просто делать:

foreach($advisors as $advisor) {
    if (count($advisor->clients) > 0) {
        Notification::send($advisor->clients, new DailyEmail($advisor));
    }
}

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