#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])
Спасибо, этот код решает мою проблему….