【问题标题】:Notifications for comments not working in laravel评论通知在 laravel 中不起作用
【发布时间】:2018-12-02 14:28:50
【问题描述】:

错误 enter image description here

当有人喜欢和评论他的帖子时,我正在尝试发送活动通知,为 cmets 和喜欢工作的通知 这是我的通知类。 我的 CommentController 有错误 if ($event->user_id != $comment->user_id)

类 NewCommentEvent 扩展通知 { 使用可排队; 受保护的$评论; /** * 创建一个新的通知实例。 * * @return 无效 */ 公共函数 __construct($comment) { $this->comment = $comment; } /** * 获取通知的传递渠道。 * * @param 混合 $notifiable * @return 数组 */ 公共功能 via($notifiable) { 返回['数据库']; } /** * 获取通知的数组表示。 * * @param 混合 $notifiable * @return 数组 */ 公共函数 toDatabase($notifiable) { 返回 [ '评论' => $this->评论, '事件' => 事件::find($this->comment->event_id), 'user' => User::find($this->comment->user_id) ]; } /** * 获取通知的数组表示。 * * @param 混合 $notifiable * @return 数组 */ 公共函数 toArray($notifiable) { 返回 [ // ]; } }

cmets上通知的我的控制器功能代码

公共功能存储(CommentRequest $request) { $event = Event::findOrFail($request->event_id); 评论::创建([ '评论' => $request->评论, 'user_id' => 验证::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"]); 返回重定向()->返回(); }

我的评论请求

命名空间 App\Http\Requests; 使用 Illuminate\Foundation\Http\FormRequest; 使用 Illuminate\Support\Facades\Auth; 类 CommentRequest 扩展 FormRequest { /** * 确定用户是否有权提出此请求。 * * @return 布尔值 */ 公共函数授权() { 返回 Auth::check(); } /** * 获取适用于请求的验证规则。 * * @return 数组 */ 公共功能规则() { 返回 [ '评论' => '必需|最大:2000', ]; } }

【问题讨论】:

  • 你的问题是什么?所有这些代码有什么问题吗?

标签: php laravel notifications laravel-notification


【解决方案1】:

你还没有定义你的 $comment,你只是创建了一个评论。这是抛出错误

$comment = Comment::create([
     .
     .
]);

这将解决您的问题

【讨论】:

    【解决方案2】:

    在您的控制器中:变量$comment 未定义。

    来自 Laravel 文档:

    create 方法返回保存的模型实例。

    所以解决办法是:

    $comment = Comment::create([
                'comment' => $request->comment,
                'user_id' => Auth::id(),
                'event_id' => $event->id
            ]);
    

    【讨论】:

      【解决方案3】:

      错误信息很清楚。 $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();
      }
      

      【讨论】:

        猜你喜欢
        • 2013-07-10
        • 2013-07-03
        • 2013-04-22
        • 1970-01-01
        • 2019-08-26
        • 1970-01-01
        • 2021-07-11
        • 2017-10-24
        • 1970-01-01
        相关资源
        最近更新 更多