传递给 App\Events\NoticeAnnouncement::__construct() 的参数 3 必须是 App\User 的实例

如何解决传递给 App\Events\NoticeAnnouncement::__construct() 的参数 3 必须是 App\User 的实例

我正在尝试在教师发布通知时向所有学生发送邮件。为此,我在创建通知调用一个事件,并通过事件变量传递通知、教师和用户。但它给出了一个错误,说“传递给 App\Events\NoticeAnnouncement::__construct() 的参数 3 必须是 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,$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));
    }
}

解决方法

您将用户集合发送到方法而不是用户模型:

Mail::to($user->email)->send(new SendNotice($event->notice,$event->teacher,$user));
,

您使用 find($key) 函数从 Illuminate\Database\Eloquent\Model 获取 \Illuminate\Database\Eloquent\Collection

public function handle(NoticeAnnouncement $event)
{
        foreach ($event->users as $key => $user) {
        Mail::to($user->email)->send(new SendNotice($event->notice,$event->users->find($key)));
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?