我的应用程序中有一个页面,该页面显示用户当前拥有的所有未读通知的列表,每个通知将具有已读图标。
数据库中的ID设置为"USD" => array("United States Dollar", "$"),
,因此一长串字母和数字也是如此。当我在页面上显示通知的ID时,它们都返回与数据库中的内容完全无关的数字,因此当我运行查询以读取通知时,由于ID为“ t匹配。
在Laravel中读取单个通知的最佳方法是什么?我正在使用下面的代码进行尝试,但是char
是不正确的,因为我似乎获得了12310作为ID,甚至对于其中的一些甚至为0。
$request->get('id')
答案 0 :(得分:0)
上面的函数将使用第一个方法返回一个数组: $ note = Auth :: user()-> unreadNotifications-> where('id',$ request-> get('id'))-> first()-> get(); $ note-> markAsRead();
答案 1 :(得分:0)
Laravel notifications
表的id
使用CHAR
作为默认字段类型。因此,当您过滤某些ID时,必须使用first()
,如下所示。由于unreadNotifications
是Illuminate\Notifications\DatabaseNotificationCollection
$notificationId = request('notification_id');
$userUnreadNotification = auth()->user()
->unreadNotifications
->where('id', $notificationId)
->first();
if($userUnreadNotification) {
$userUnreadNotification->markAsRead();
}
答案 2 :(得分:0)
Laravel notifications
表的ID使用CHAR作为默认字段类型。因此,当您过滤某个ID时,必须使用first()
,如下所示。
我的xxx.blade.php
是:
<li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
<span class="glyphicon glyphicon-globe"></span>Notifications<span class="badge">{{ count(Auth::user()->unreadNotifications) }}</span>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
@foreach(Auth::user()->unreadNotifications as $notification)
<a href="{{route('vendor.commentReplay',[ 'id' => $notification->id])}}" class="dropdown-item" >
{{$notification->data['user']['email']}} commented on <strong> {{$notification->data['CommentDetails']['comment']}}</strong>
</a>
@endforeach
</div>
</li>
在web.php
中:
Route::get('comment-replay/{id}','VendorsController@comment_replay')->name('commentReplay');
最后,在我的VendorsController@comment_replay
函数中,如下所示:
public function comment_replay($id)
{
$userUnreadNotification = auth()->user()
->unreadNotifications
->where('id', $id)
->first();
if($userUnreadNotification) {
$userUnreadNotification->markAsRead();
}
}