我正在与Laravel 8合作,以建立一个论坛,现在我想发送一个通知给一个用户谁已经问了一个问题,每当有人回答这个问题。
因此,为了做到这一点,我将其添加到Controller中:
public function postAnswer(Request $request, $question, $asker) {
$validate_data = $request->validate([
'answer' => 'required',
]);
$answer = Answer::create([
'answer' => $request->answer,
'user_id' => auth()->user()->id,
'question_id' => $question,
]);
$asker->notify(new RepliedToThread($question));
return back();
}因此,$question是问题id,$asker是提问者的用户id。
但现在我发现了一个错误:
调用字符串上的成员函数通知()
有趣的是,当我使用auth()->user()->notify(new RepliedToThread($question));时,它工作得很好!
但是我不想通知任何经过认证的用户,我需要通知问过问题的人,这就是为什么我试图通过$asker.
如果你知道如何解决这个问题,请告诉我.
我真的很感激你们的任何想法或建议。
提前谢谢。
刀片:
<form action="{{ route('questions.answers', ['question' => $show->id, 'asker' => $show->user->id]) }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="mb-4">
<textarea name="answer" id="answer" class="form-control BSinaBold" rows="7" placeholder="Write down answer"></textarea>
@error('answer')
<div class="text-red-500 mt-2 text-sm">
{{ $message }}
</div>
@enderror
</div>
</br>
<button type="submit" class="btn btn-primary">Send</button>
</form>发布于 2021-04-27 06:32:50
问题是,asker只是一个id,您应该从user表中获取asker的其他信息,然后将通知传递给asker。
$asker = User::findOrFail($asker);
$asker->notify(new RepliedToThread($question));发布于 2021-04-27 06:29:59
根据你所说的,问题是$asker。这个参数应该是User模型中的一个实例,但是错误意味着它是字符串。
在表单中更改表单标记:
<form action="{{ route('questions.answers', ['question' => $show->id, 'asker' => $show->user]) }}" method="POST" enctype="multipart/form-data">在id之后删除user。
发布于 2021-04-27 06:36:04
确保您的Answer.php导入了use Notifiable;
参考链接https://laravel.com/docs/8.x/notifications#using-the-notifiable-trait
然后,只有您可以从notify()模型实例调用Answer函数。
https://stackoverflow.com/questions/67277920
复制相似问题