Я пытаюсь разослать всем ученикам почту, когда учитель отправит уведомление. Для этого я вызываю событие, когда создается уведомление, и передаю уведомление, учителя и пользователя через переменную события. Но он дает ошибку, говоря, что аргумент 3, переданный в App \ Events \ NoticeAnnouncement :: __ construct (), должен быть экземпляром App \ User, экземпляром данного экземпляра Illuminate \ Database \ Eloquent \ Collection, вызываемым в C: \ xampp \ htdocs \ iiucsmartclassroom \ app \ Http \ Controllers \ Teacher \ NoticeController.php.
Вот мой контроллер уведомлений:
public function submitNotice(Request $request){
$validatedData = $request->validate([
'notice_title' => 'required|max:255',
'notice_description' => 'required|max:3000',
'notice_file.*' => 'mimes:jpg,jpeg,pdf',
]);
$data=array();
$data['teacher_id']=$request->teacher_id;
$data['notice_title']=$request->notice_title;
$data['notice_description']=$request->notice_description;
$data['notice_post_date']=$request->notice_post_date;
$data['notice_post_time']=$request->notice_post_time;
$image=$request->file('notice_file');
if ($image) {
$image_name= str::random(5);
$ext=strtolower($image->getClientOriginalExtension());
$image_full_name=$image_name.'.'.$ext;
$upload_path='notices/';
$image_url=$upload_path.$image_full_name;
$success=$image->move($upload_path,$image_full_name);
if ($success) {
$data['notice_file']=$image_url;
$notices = DB::table('notices')
->insertGetId($data);
$notice = Notice::find($notices);
$teacher = Teacher::find($notice->teacher_id);
$users = User::all();
event(new NoticeAnnouncement($notice,$teacher,$users));
if ($notices) {
$notification=array(
'message'=>'Notice Posted Successfully',
'alert-type'=>'success'
);
return Redirect()->back()->with($notification);
}else{
$notification=array(
'message'=>'Could not be able to post the Notice',
'alert-type'=>'error'
);
return Redirect()->back()->with($notification);
}
}else{
return Redirect()->back();
}
}else{
$notice = DB::table('notices')
->insert($data);
if ($notice) {
$notification=array(
'message'=>'Notice Posted Successfully',
'alert-type'=>'success'
);
return Redirect()->back()->with($notification);
}else{
$notification=array(
'message'=>'Could not be able to post the Notice',
'alert-type'=>'error'
);
return Redirect()->back()->with($notification);
}
}
}
Вот мое событие:
public $notice,$teacher,$user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Notice $notice,Teacher $teacher,User $user)
{
$this->notice = $notice;
$this->teacher = $teacher;
$this->user = $user;
}
Вот мой слушатель:
public function handle(NoticeAnnouncement $event)
{
foreach ($event->user as $user) {
Mail::to($user->email)->send(new SendNotice($event->notice,$event->teacher,$event->user));
}
}