Уведомления о комментариях не работает в 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();
}
Другие вопросы по тегам