Условные уведомления Laravel

#arrays #laravel #laravel-notification

#массивы #laravel #laravel-уведомление

Вопрос:

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

У меня есть пользователи — $data['salesman'] в моем случае — которые добавляются из входных данных. Тогда у меня есть больше пользователей, которых я хочу добавить в массив, которые являются статическими на основе $data['branch'] поля формы.

             // Find selected salesman to send notifications
            $users = User::whereIn('name', $data['salesman'])->get();

            // Send to appropriate people at selected branch
            if($data['branch'] === 'Richmond') {
                $users = User::whereIn('name', ['Jane Doe', 'John Doe'])->get();
            }

            // Send notification to proper user(s)
            Notification::send($users, new TrafficCreated($traffic));
 

Спасибо за любую помощь, которую вы можете предоставить.

Ответ №1:

Вы можете объединять коллекции вместе с merge помощью метода.

Что-то вроде:

 $users = User::whereIn('name', $data['salesman'])->get();

if($data['branch'] === 'Richmond') {
    $branch_users = User::whereIn('name', ['Jane Doe', 'John Doe'])->get();
}

// todo: add other conditions for different branches here

if (isset($branch_users)) {
    $users->merge($branch_users);
}

Notification::send($users, new TrafficCreated($traffic));
 

Комментарии:

1. Спасибо @brice. Я не думал искать слияние. Отлично работает.

2. Потрясающе! Можете ли вы принять ответ для других, которые могут найти это в будущем?