Уведомления о комментариях не работает в laravel
Ошибка введите описание изображения здесь
Я пытаюсь отправить уведомления о событии, когда некоторые лайки и комментарии к его посту, уведомления о комментариях и лайках, работающих здесь, это мой класс уведомлений. у меня есть ошибка в моем CommentController if ($event->user_id != $comment->user_id)
Класс NewCommentEvent расширяет Уведомление { использовать Queueable; защищенный комментарий $; /** * Создать новый экземпляр уведомления. * * @return void */ публичная функция __construct($comment) { $this->comment = $comment; } /** * Получить каналы доставки уведомления. * * @param mixed $ уведомляемый * @return array */ публичная функция через ($ уведомляемый) { return ['database']; } /** * Получить массив представления уведомления. * * @param mixed $ уведомляемый * @return array */ публичная функция toDatabase($notifiable) { вернуть [ 'comment' => $this->comment, 'event' => Event::find($this->comment->event_id), 'user' => User::find($this->comment->user_id) ]; } /** * Получить массив представления уведомления. * * @param mixed $ уведомляемый * @return array */ публичная функция toArray($notifiable) { вернуть [ // ]; } }
Мой код функции контроллера для уведомлений о комментариях
магазин публичных функций (CommentRequest $request) { $event = Event::findOrFail($request->event_id); Комментарий:: создать ([ 'comment' => $request->comment, 'user_id' => Auth::id(), 'event_id' => $event->id ]); if ($event->user_id!= $comment->user_id) { $user = User::find($event->user_id); $user->notify(new NewCommentEvent($comment)); } Toastr::success('Комментировать сообщение с успехом','', ["positionClass" => "toast-top-center"]); return redirect()->back(); }
мой CommenRequest
пространство имен App\Http\Requests; использовать Illuminate\Foundation\Http\FormRequest; использовать Освещение \ Поддержка \ Фасады \Auth; Класс CommentRequest расширяет FormRequest { /** * Определите, авторизован ли пользователь сделать этот запрос. * * @return bool */ публичная функция authorize() { return Auth::check(); } /** * Получить правила проверки, которые применяются к запросу. * * @return array */ правила публичных функций () { вернуть [ 'comment' => 'обязательно |max:2000', ]; } }
3 ответа
В вашем контроллере: переменная $comment
не определено.
Из документов Laravel:
create
Метод возвращает сохраненный экземпляр модели.
так что решение таково:
$comment = Comment::create([
'comment' => $request->comment,
'user_id' => Auth::id(),
'event_id' => $event->id
]);
Вы не определили свой комментарий $, вы только что создали комментарий. Это выбрасывает ошибку
$comment = Comment::create([
.
.
]);
Это исправит вашу проблему
Сообщение об ошибке было ясно. $comment
не определено Замените код вашего контроллера следующим:
public function store(CommentRequest $request)
{
$event = Event::findOrFail($request->event_id);
// defined comment here
$comment = Comment::create([
'comment' => $request->comment,
'user_id' => Auth::id(),
'event_id' => $event->id
]);
if ($event->user_id != $comment->user_id) {
$user = User::find($event->user_id);
$user->notify(new NewCommentEvent($comment));
}
Toastr::success('Comment post with success','', ["positionClass" => "toast-top-center"]);
return redirect()->back();
}