Так что я создаю пользовательские уведомления в реальном времени с помощью Pusher & Laravel Echo .
Я могу сказать, что это работает. но у меня есть два вопроса.
First
: когда уведомление было удалено из базы данных, оно все равно появилось бы в области уведомлений. пока я не обновлю sh страницу.
, поэтому я пытаюсь обновить список уведомлений в режиме реального времени, даже если уведомление было удалено, а затем удалить его.
скажем, у меня есть уведомление под названием "тест 1", и я удалил его из базы данных, и создал это уведомление снова. это будет дубликат «теста 1».
, поэтому я думаю о «Обновлении области уведомлений, чтобы также удалять удаленные уведомления в режиме реального времени».
Secondly
: когда приходит новое уведомление, он добавляется внизу списка уведомлений, что если я хочу, чтобы он был вверху списка? это высокоприоритетная вещь.
Вот некоторые фрагменты моего кода:
NewPostController :
public function create() {
$user->notify(new NewPostNotification(
'foo',
'bar',
));
}
public function destroy() {
DB::table('notifications')->select('*')->where([
['type', '=', 'App\Notifications\NewPostNotification']
])->delete();
}
NewPostNotification :
public function via($notifiable) {
return ['database', 'broadcast'];
}
public function toDatabase() {
return [
'foo' => 1,
'bar' => 2
];
}
public function toBroadcast($notifiable) {
return new BroadcastMessage ([
'notification' => $notifiable->notifications()->latest()->first()
]);
}
Уведомление. vue
<template>
<notification-item v-for="unread in unreadNotifications" :unread="unread" :key="unread.id"></notification-item>
</template>
<script>
import NotificationItem from './NotificationItem.vue';
export default {
props: ['unreads', 'userid'],
components: {NotificationItem},
data(){
return {
unreadNotifications: this.unreads
}
},
mounted() {
Echo.private('App.User.' + this.userid)
.notification((notification) => {
let newUnreadNotifications = {data: notification.notification.data };
this.unreadNotifications.push(newUnreadNotifications);
});
}
}
</script>
Элемент уведомления. vue
<template>
<div class="notification-item">
<h2>{{ unread.data.foo }}</h2>
<p>{{ unread.data.bar }}</p>
</div>
</template>
header.blade. php:
{{--notification--}}
<notification :userid="{{auth()->id()}}" :unreads="{{auth()->user()->unreadNotifications}}"></notification>
Как мне этого добиться?
Спасибо.