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

#laravel

#laravel

Вопрос:

Сразу же я хочу спросить, как я спросил в названии.
У меня есть такой контроллер:

 public function store(Request $request)
{
    //

    $this->validate($request, [
        'status'=> 'required|min:1|max:2',
        'subject' => 'required|min:10|max:255',
        'body' => 'required|min:10|max:100000'
    ]);
    if ($request->status == 1){
        $this->validate($request, [
            'email' => 'required|email',
        ]);
        $user = User::whereEmail($request->email)->firstOrFail();
        $notice = new Notice();
        $notice->user_id = $user->id;
        $notice->title = $request->subject;
        $notice->priority = $request->priority;
        $notice->body = $request->body;
        $notice->status = 0;

        if ($request->hasFile('featured')){
            $featured = $request->featured;
            $featured_new_name = time().$featured->getClientOriginalName();
            $featured->move('uploads/posts', $featured_new_name);
            $notice->file = 'uploads/posts/'. $featured_new_name;
        }
        $notice->save();
        session()->flash('message', "Send Message to ".$user->name." Successful!");
        Session::flash('type', 'success');
        Session::flash('title', 'Message Send Success!');
        return redirect()->route('adminMessage.create');
    }
    else {

        $users = User::all();

        if ($request->hasFile('featured')){
            $featured = $request->featured;
            $featured_new_name = time().$featured->getClientOriginalName();
            $featured->move('uploads/posts', $featured_new_name);
            $attachment = 'uploads/posts/'. $featured_new_name;
        }
        foreach ($users as $user){

            $notice = new Notice();
            $notice->user_id = $user->id;
            $notice->title = $request->subject;
            $notice->priority = $request->priority;
            $notice->body = $request->body;
            $notice->status = 0;

            if ($request->hasFile('featured')){
                $notice->file  = $attachment;
            }
            $notice->save();
        }
        session()->flash('message', "Send Message to all Users Successful!");
        Session::flash('type', 'success');
        Session::flash('title', 'Message Send Success!');
        return redirect()->route('adminMessage.create');
    }
}
  

У меня есть 2 статуса в этом поле:
Для статуса 1 я отправляю для выбранного участника (только одного)
Для статуса 2 я отправляю для всех пользователей $user= User::all();

Итак, мне нужна помощь в отправке уведомлений с помощью Membership_role У
меня есть таблицы членства, например, такие:

 =========================
| id |  name  |  count  |
-------------------------
|  1 |  free  |  200    |
|  2 |  free  |  200    |
|  3 |  free  |  200    |
|  4 |  free  |  200    |
  

Как мне отправить сообщение на идентификатор участника: 2,3,4

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

1. членство связано как внешний ключ в таблице users?

2. Membership_role — это модель, имеет ли она какое-либо отношение к модели пользователя?

3. Да, у меня есть внешний ключ в таблице users, поэтому моя проблема только в том, как отправить сообщение с отдельным, например: $membership = Membership::whereId(2,3,4)-> get();

4. Вы выполняете запросы в неправильной таблице, если вы хотите получить пользователей по их членству, вы должны использовать User::where('membership_id',$the_id)

5. User::where('membership_id',$the_id) как разделить идентификатор? User::where('membership_id','2,3,4') вот так

Ответ №1:

Если это свойство User модели, вы можете использовать запросы для поиска нужного пользователя или пользователей.

 
/*
I use a switch just in case you have more than 2 notice statuses to handle
the sendTo functions are functions declared in your controller to handle the cases.  
*/
switch($notice->status){
    /*Query the user by the membership id to send the notice*/
    case 1:
        $user = User::where('membership_id',$the_membership)->first();
        return $this->sendTo($user);
    case 2:
    /*Get all users*/
        $users = User::all();
        return $this->sendTo($users);
   /*Handle other notice statuses*/
    default:
        return $this->sendToDefault();
}

  

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

1. Нет, я закончил этот раздел, но как я могу одновременно отправить уведомление membership_id = 2,3,4?

2. Используется User::whereIn('membership_id', [2, 3,4]) для извлечения пользователей с этими членствами.

3. User::whereIn('membership_id', [2, 3,4]) Спасибо, этот код решает мою проблему….