Search by

curly-deni / laravel-notifications

curly-deni

Reusable database notifications for Laravel applications.

Package info

github.com/curly-deni/laravel-notifications

pkg:composer/curly-deni/laravel-notifications

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0 2026-09-30 11:19 UTC

This package is auto-updated.

Last update: 2026-09-30 13:19:15 UTC


README

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.