laravel-notifications maintained by curly-deni
Laravel Notifications
Database notifications for Laravel applications, with configurable table and recipient model, cursor pagination, read/delete operations, deduplication keys, and a creation event.
Installation
composer require curly-deni/laravel-notifications
Publish the configuration and migration, then run the migration:
php artisan vendor:publish --tag=laravel-notifications-config
php artisan vendor:publish --tag=laravel-notifications-migrations
php artisan migrate
Set the recipient model and table name in config/notifications.php before migrating:
return [
'user_model' => App\Models\User::class,
'database' => [
'table' => 'notifications',
],
];
The migration creates a UUID keyed table. Choose a table name that is not already used by another notifications migration.
The default migration uses $table->morphs('notifiable'), which creates a numeric notifiable_id column. If the configured recipient model uses UUID or ULID primary keys, edit the published migration before running it and replace that call with $table->uuidMorphs('notifiable') or $table->ulidMorphs('notifiable'), respectively. The morph column type must match the recipient model's primary key type.
Usage
Add the trait to an Eloquent model that will receive notifications:
use Aesis\Notifications\Traits\HasNotifications;
class User extends Authenticatable
{
use HasNotifications;
}
Create notifications through the service. A repeated deduplication key for the same recipient returns the existing notification:
use Aesis\Notifications\Services\UserNotificationService;
$notification = app(UserNotificationService::class)->createForUser(
$user,
[
'type' => 'order.paid',
'title' => 'Payment received',
'message' => 'Your order has been paid.',
'level' => 'success',
'href' => '/orders/123',
],
dedupeKey: 'order.paid:123',
);
The service also provides list($user, $cursor = null, $limit = 20), markAsRead($user, $id), delete($user, $id), and deleteAll($user). New records dispatch Aesis\Notifications\Events\UserNotificationCreated after commit.
The notifications:test Artisan command sends a test notification to every model configured in notifications.user_model. Use --yes to skip confirmation and --title, --message, and --level to customize the notification.
Testing and analysis
composer test
composer analyse
composer format
License
This package is open-sourced software licensed under the MIT license.