我希望在我选中时将通知标记为已读,然后将它们设为已读,但不起作用 这是我的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();
});
我该怎么办请帮助我
答案 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');
});
当用户点击通知时,您可以使用类似的通知。或者,如果您只是因为某些原因将所有通知标记为已读,那么在迭代结果时,您几乎会做同样的事情。
您应该将所有逻辑移动到控制器。