ошибка
введите описание изображения здесь
Я пытаюсь отправить уведомления о событии, когда кому-то нравится и комментировать его пост, уведомления о комментариях и лайках работают
вот мой класс уведомлений.
у меня есть ошибка в моем 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', ]; } }
В вашем контроллере: переменная $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();
}