How to Create Laravel Database Notification with Example Part 1
In this tutorial, we are going to see how to create Laravel database notifications, let's assume that we want to notify a user when the admin removes his post on a blogging platform.
Create the migration
First, we need to create the migration for the notifications table.
php artisan notifications:table
Run the migration
Next, run the migration.
php artisan migrate
Create the notification
Next, we will create the notification as we said before the notification will receive a post that has been removed by the admin.
php artisan make:notification PostRemoved
Update the via & toArray methods
Next, we update the "via" method to include the database channel and the "toArray" method to return the data that we want to store in the notifications table.
<?php
namespace App\Notifications;
use App\Models\Post;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class PostRemoved extends Notification
{
use Queueable;
private $post;
/**
* Create a new notification instance.
*/
public function __construct(Post $post)
{
//
$this->post = $post;
}
/**
* Get the notification's delivery channels.
*
* @return array<int, string>
*/
public function via(object $notifiable): array
{
return ['database'];
}
/**
* Get the mail representation of the notification.
*/
public function toMail(object $notifiable): MailMessage
{
return (new MailMessage)
->line('The introduction to the notification.')
->action('Notification Action', url('/'))
->line('Thank you for using our application!');
}
/**
* Get the array representation of the notification.
*
* @return array<string, mixed>
*/
public function toArray(object $notifiable): array
{
return [
//
'post_id' => $this->post->id,
'title' => $this->post->title,
];
}
}