Notifications help you send messages to users about important events. They keep users informed without needing them to check manually.
Creating notifications in Laravel
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Laravel
php artisan make:notification NotificationName // In the notification class: public function via($notifiable) { return ['mail', 'database']; } public function toMail($notifiable) { return (new MailMessage) ->line('Notification message') ->action('Notification Action', url('/')) ->line('Thank you!'); } public function toArray($notifiable) { return [ 'data' => 'Notification data here', ]; }
Use php artisan make:notification to create a new notification class.
The via method defines how the notification is sent (mail, database, etc.).
Examples
Laravel
public function via($notifiable)
{
return ['mail'];
}Laravel
public function via($notifiable)
{
return ['database'];
}Laravel
public function toArray($notifiable)
{
return [
'message' => 'You have a new friend request!'
];
}Sample Program
This notification sends a welcome email to a new user with a link to the dashboard.
Laravel
<?php namespace App\Notifications; use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; class WelcomeUser extends Notification { public function via($notifiable) { return ['mail']; } public function toMail($notifiable) { return (new MailMessage) ->subject('Welcome to Our App') ->line('Hello! Thanks for joining us.') ->action('Visit Dashboard', url('/dashboard')) ->line('We hope you enjoy your stay.'); } } // Usage example in a controller or event: // $user->notify(new WelcomeUser());
Important Notes
Notifications can be sent via multiple channels like mail, database, SMS, or Slack.
Make sure to configure mail settings in .env to send emails.
Database notifications require a notifications table created by php artisan notifications:table and migration.
Summary
Notifications keep users informed about important events.
Create notifications with php artisan make:notification and define delivery channels.
Use notify() on user models to send notifications.
Practice
1. What is the primary purpose of notifications in Laravel?
easy
Solution
Step 1: Understand the role of notifications
Notifications are designed to keep users informed about events or updates in the application.Step 2: Compare with other options
Creating tables, authentication, and performance optimization are unrelated to notifications.Final Answer:
To inform users about important events or updates -> Option AQuick Check:
Notifications = Inform users [OK]
Hint: Notifications inform users about events [OK]
Common Mistakes:
- Confusing notifications with database migrations
- Thinking notifications handle authentication
- Assuming notifications improve performance directly
2. Which artisan command is used to create a new notification class in Laravel?
easy
Solution
Step 1: Recall the artisan command for notifications
The correct command to create a notification class isphp artisan make:notificationfollowed by the notification name.Step 2: Identify incorrect commands
Other commands likemake:notify,create:notification, orgenerate:notificationdo not exist in Laravel.Final Answer:
php artisan make:notification NotificationName -> Option DQuick Check:
Use make:notification to create notifications [OK]
Hint: Use 'make:notification' with artisan [OK]
Common Mistakes:
- Using 'make:notify' instead of 'make:notification'
- Confusing 'create' or 'generate' commands
- Omitting the notification class name
3. Given this code snippet, what will be the result?
use App\Notifications\InvoicePaid; $user = User::find(1); $user->notify(new InvoicePaid($invoice));
medium
Solution
Step 1: Understand the notify() method
Thenotify()method sends the given notification instance to the user model.Step 2: Analyze the code behavior
The code finds the user with ID 1 and sends them theInvoicePaidnotification.Final Answer:
Sends an InvoicePaid notification to the user with ID 1 -> Option BQuick Check:
notify() sends notification to user [OK]
Hint: notify() sends notification to the user model [OK]
Common Mistakes:
- Thinking notify() creates or deletes users
- Assuming notify() is not a valid method
- Confusing notification sending with user creation
4. Identify the error in this notification sending code:
$user = User::find(5); $user->notify(InvoicePaid);
medium
Solution
Step 1: Check how notifications are sent
Thenotify()method requires a notification instance, soInvoicePaidmust be created withnew InvoicePaid().Step 2: Verify other parts
User::find(5)is correct to get a user by ID, andnotify()exists on the User model. User existence is not guaranteed but not a syntax error.Final Answer:
InvoicePaid should be instantiated with new keyword -> Option AQuick Check:
Notifications need new instance [OK]
Hint: Always use 'new' to create notification instances [OK]
Common Mistakes:
- Passing class name without instantiation
- Using User::get instead of find for single user
- Assuming notify() method is missing
5. You want to send a notification only via email and database channels. Which method should you define in your notification class to specify these channels?
hard
Solution
Step 1: Recall the via() method role
In Laravel notifications, thevia()method defines which channels the notification uses.Step 2: Check correct channel names and method signature
The method must accept the $notifiable parameter and return an array with channel names like 'mail' and 'database'. Other method names or channel names are incorrect.Final Answer:
public function via($notifiable) { return ['mail', 'database']; } -> Option CQuick Check:
via() defines notification channels [OK]
Hint: Use via() method to list channels [OK]
Common Mistakes:
- Using wrong method names like channels()
- Using incorrect channel names like 'email' instead of 'mail'
- Omitting the $notifiable parameter
