Я знаю, что есть много способов, чтобы пометить как прочитанные все уведомления о качестве пользователя в L5.3, как это:метка чтения конкретного получателя уведомления в Laravel 5.3 Уведомления
$user = App\User::find(1);
foreach ($user->unreadNotifications as $notification) {
$notification->markAsRead();
}
Или:
$user->unreadNotifications->markAsRead();
Но предположим, что хочу отметить как прочитанное определенное уведомление с заданным ID.
На самом деле, я сделал список непрочитанных уведомлений пользователя, как это:
<ul class="menu">
@foreach($AuthUser->unreadNotifications as $notif)
<li>
<a href="{{$notif->data['action']}}" data-notif-id="{{$notif->id}}">
{{$notif->data['message']}}
</a>
</li>
@endforeach
</ul>
Как вы видите, каждый a
тег имеет атрибут data-notif-id
содержать Notif ID.
Теперь я хочу отправить этот идентификатор сценарию через Ajax (событие click) и пометить как прочитанное только это уведомление. для этого я написал:
$('a[data-notif-id]').click(function() {
var notif_id = $(this).data('notifId');
var targetHref = $(this).data('href');
$.post('/NotifMarkAsRead', {'notif_id': notif_id}, function (data) {
data.success ? (window.location.href = targetHref) : false;
}, 'json');
return false;
});
NotifMarkAsRead
относится к сильфонные Контроллер:
class NotificationController extends Controller
{
public function MarkAsRead (Request $request)
{
//What Do I do Here........
}
}
Как я могу это сделать, пока нет каких-либо Notification
модель?
Если нет 'модели Notification' (так, не имеет никакого отношения множества), где делает' unreadNotifications' метод пришел? Или: что это? Пользовательский метод? – lesssugar
Значок 'Illuminate \ Notifications \ Notifiable' предоставляет метод markAsRead', и я использовал его в User Model. –
'unreadNotifications()' возвращает модель, поэтому вы можете использовать цепочку для фильтрации, например: '$ user-> unreadNotifications() -> где ('notifications.id', $ id) -> markAsRead(); '. Или, если метод 'markAsRead()' недоступен, я также попытаюсь использовать '-> update (['read_at' => Carbon :: now()])' вместо этого. – lesssugar