如何将通知标记返回为已读

时间:2018-03-20 17:52:21

标签: laravel notifications

我希望在我选中时将通知标记为已读,然后将它们设为已读,但不起作用 这是我的app.blade.php

 <li class="dropdown" id="markasread" onclick="markNaotificationAsAread()">

                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="true">
            <span class="glyphicon glyphicon-globe"></span> Notifications <span class="badge ">{{count(Auth()->user()->unreadNotifications)}}</span>

                            </a>
                            <ul class="dropdown-menu" role="menu">

                                    @foreach(Auth()->user()->unreadNotifications as $notification)
                                 <li>
                                    @if(isset($notification->data['ad_object']))
        <a href="#">{{$notification->data['user_name']}} posted a new ad  "{{$notification->data['ad_object']}}"</a>
                           @endif

                            @if(isset($notification->data['comment_content']))
        <a href="#">{{$notification->data['user_name']}} posted a new comment "{{$notification->data['comment_content']}}"</a>
                           @endif
                                 </li>
                                 @endforeach



                            </ul>
                        </li>

                        <li class="dropdown">

这是我的web.php

 Route::get('/markAsRead',function(){

Auth()->user()->unreadNotifications->markAsRead();

});

我该怎么办请帮助我

1 个答案:

答案 0 :(得分:0)

您的代码在尝试将通知标记为已读时方面留下了太多的想象力,但最简单的方法是在通知表中添加一列“阅读”#39;数据类型Boolean / tiny int。

创建通知时,读取列的默认值为false。

然后,当单击通知时,您可以将用户路由到一个简单的方法,该方法将通知表中的读取列更新为true。然后将用户重定向到通知所在的任何位置。

Route::get('/markAsRead/{notification}',function($notification ){
    $mark = Auth()->user()->unreadNotifications->where 
    ('id', $notification)->first ();

    $mark->update (['read' => true]);

   return redirect ()->route('routename');
});

当用户点击通知时,您可以使用类似的通知。或者,如果您只是因为某些原因将所有通知标记为已读,那么在迭代结果时,您几乎会做同样的事情。

您应该将所有逻辑移动到控制器。