如何向当前未登录的用户发送 Laravel 中的通知?

How can I send a notification in Laravel to a user that is not currently logged in?

我正在构建求职类型的应用程序。有两种类型的用户,求职者和雇主,每个人都有自己的角色。当雇主登录后,他可以浏览候选人的资料并请求面试。他可以为时间和日期选择 2 个选项,然后单击发送。当该特定用户登录时,我想在页面顶部显示带有铃铛图标的通知,通知应显示 "You've been sent an Interview request!"。然后,当他们单击它或转到管理面板上的“通知”部分时,它将显示带有 2 个日期和时间选项的雇主信息 "Hi username, Company ABC is interested in your profile and would like to schedule you for an interview."。求职者select的日期和时间选项1,点击发送,然后雇主收到求职者的通知。他们将以这种方式交流,直到他们都同意安排面试的日期和时间。所以我想要 2 个通知。 1 当面试请求被发送给候选人时,第二个是当候选人 select 一个对他有利的日期和时间,并将请求发回雇主。我了解如何在用户登录时发送通知,但我缺少有关如何向未登录用户发送通知的内容。这两种类型的用户都存储在我的用户 Table 中,只是角色不同。

job_seeker_profile.blade.php 文件:

{!! Form::open(['method'=>'POST', 'action'=>'AdminEmployerInterviewRequestsController@store', 'files'=>true, 'style'=>'width: 100%;']) !!}

<div class="form-group">
    <div class="input-group date" id="datetimepicker1" data-target-input="nearest">
        {!! Form::text('date_time1', null, ['class'=> $errors->first('date_time1') ? 'border-danger form-control datetimepicker-input' : 'form-control datetimepicker-input', 'data-target'=>'#datetimepicker1']) !!}
        <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
            <div class="input-group-text"><i class="fa fa-calendar"></i></div>
        </div><br>
    </div>
    <small class="text-danger">{{ $errors->first('date_time1') }}</small>
</div>
<div class="col">

</div>

<div class="form-group">
    <div class="input-group date" id="datetimepicker2" data-target-input="nearest">
        {!! Form::text('date_time2', null, ['class'=> $errors->first('date_time2') ? 'border-danger form-control datetimepicker-input' : 'form-control datetimepicker-input', 'data-target'=>'#datetimepicker2']) !!}
        <div class="input-group-append" data-target="#datetimepicker2" data-toggle="datetimepicker">
            <div class="input-group-text"><i class="fa fa-calendar"></i></div>
        </div><br>
    </div>
    <small class="text-danger">{{ $errors->first('date_time2') }}</small>
</div>

<div class="form-group">
    {!! Form::hidden('user_id', Auth::user()->id, ['class'=>'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::hidden('job_seeker_profile_user_id', $jobSeekerProfile->id, ['class'=>'form-control']) !!}
</div>

<div class="form-group">
    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
    {!! Form::submit('Send Interview Request', ['class'=>'btn btn-primary float-right']) !!}
</div>
<br><br><br><br>

{!! Form::close() !!}

AdminEmployerInterviewRequestsController.php 文件:

public function store(EmployerInterviewCreateRequest $request)
{
    $input = $request->all();

    $user = Auth::user();

    $JobSeekerProfile = JobSeekerProfile::all();

    $user->interviewRequestsSent()->create($input);
    $user->interviewRequestsReceived()->create($input);

    $user->notify(new InterviewRequestSent());

    $JobSeekerProfile->notify(new InterviewRequestReceived());

    return redirect('/admin/employer/interviews');

}

但是当我打电话给

$JobSeekerProfile->notify(new InterviewRequestReceived());

它给了我这个错误:

Method Illuminate\Database\Eloquent\Collection::notify does not exist.

是否可以在执行操作后向其他用户发送通知?

现在不可能。只有登录的用户才能收到通知。我已经发送了几张关于这个的票

您的错误是因为您将每个 JobSeekerProfile 都拉到一个集合中,然后试图对该集合调用 notify()。由于您要提交 ID,因此只需使用它来构建实例并通知它即可。

public function store(EmployerInterviewCreateRequest $request)
{
    $input = $request->all();

    $user = Auth::user();

    $JobSeekerProfile = JobSeekerProfile::find($request->job_seeker_profile_user_id);

    $user->interviewRequestsSent()->create($input);
    $user->interviewRequestsReceived()->create($input);

    $user->notify(new InterviewRequestSent());

    $JobSeekerProfile->notify(new InterviewRequestReceived());

    return redirect('/admin/employer/interviews');

}