Setting up the notifications database table
Before we start, make sure that the Laravel notifications table is added to your database:If you’re using PostgreSQL, make sure that thedatacolumn in the migration is usingjson():$table->json('data').
If you’re using UUIDs for yourUsermodel, make sure that yournotifiablecolumn is usinguuidMorphs():$table->uuidMorphs('notifiable').
Enabling database notifications in a panel
If you’d like to receive database notifications in a panel, you can enable them in the configuration:Sending database notifications
There are several ways to send database notifications, depending on which one suits you best. You may use our fluent API:notify() method:
Laravel sends database notifications using the queue. Ensure your queue is running in order to receive the notifications.Alternatively, use a traditional Laravel notification class by returning the notification from the
toDatabase() method:
Moving the database notifications trigger to the panel sidebar
By default, the database notifications trigger is positioned in the topbar. If the topbar is disabled, it is added to the sidebar. You can choose to always move it to the sidebar by passing aposition argument to the databaseNotifications() method in the configuration:
Receiving database notifications
Without any setup, new database notifications will only be received when the page is first loaded.Polling for new database notifications
Polling is the practice of periodically making a request to the server to check for new notifications. This is a good approach as the setup is simple, but some may say that it is not a scalable solution as it increases server load. By default, Livewire polls for new notifications every 30 seconds:Using Echo to receive new database notifications with websockets
Websockets are a more efficient way to receive new notifications in real-time. To set up websockets, you must configure it in the panel first. Once websockets are set up, you can automatically dispatch aDatabaseNotificationsSent event by setting the isEventDispatched parameter to true when sending the notification. This will trigger the immediate fetching of new notifications for the user:
Marking database notifications as read
There is a button at the top of the modal to mark all notifications as read at once. You may also add Actions to notifications, which you can use to mark individual notifications as read. To do this, use themarkAsRead() method on the action:
markAsUnread() method to mark a notification as unread:
Opening the database notifications modal
You can open the database notifications modal from anywhere by dispatching anopen-modal browser event: