c4studio/notification

This package is abandoned and no longer maintained. No replacement package was suggested.

Provides an interface for adding and retrieving database stored notifications.

v1.0.0 2016-10-11 13:59 UTC

This package is auto-updated.

Last update: 2021-06-13 04:01:23 UTC


README

Provides an interface for adding and retrieving database stored notifications.

Installation

Just place require new package for your laravel installation via composer.json

"c4studio/notification": "1.0.*"

Then simply composer update

Registering to use it with laravel

Add following lines to app/config/app.php

ServiceProvider array

C4studio\Notification\NotificationServiceProvider::class,

Alias array

'Notification' => C4studio\Notification\Facades\Notification::class,

Publishing migrations (Laravel 5.2 and lower only)

php artisan vendor:publish --provider="C4studio\Notification\NotificationServiceProvider" --tag=migrations

Running migrations

Notification uses a database table for storage, so you'll need to run the migrations

php artisan migrate

Usage

Select models which can receive notifications

You must apply the HasNotifications trait to all models that will be able to receive notifications

class User extends Model
{
    use HasNotifications;

    ...
}

Add notification using facade

You can add notifications using the notify() method, which take two parameters: the notification message and the recipient(s). The second parameter accepts either a model or an array/collection of models

Notification::notify('Notification message', Auth::user());
Notification::notify('Notification message', \App\User::all());

If no recipient is set, the notification will be treated as a system message, and will be attached to every user model

Notification::notify('Notification message');

Add notification using helper function

notify('Message', Auth::user());
notify('Message');

Retrieving notifications for a model

To get notifications for a model, use the notifications relationship

Auth::user()->notifications;
Auth::user()->notifications()->first();

You can also easily get the system notifications

Auth::user()->notifications_system;
Auth::user()->notifications_system()->first();

Marking notification as read/unread

You can mark notification as read/unread by using the markRead() and markUnread() methods. But accept the user model or user ID as a parameter. If ommitted, message will be marked for current authenticated user

$notification::markRead();
$notification::markRead(\App\User::first());
$notification::markUnread(1);

Check if notification has been read by current user

You can check if a notification has been read by the currently authenticated user, by accessing the read attribute.

echo $notification::read ? 'It is read' : 'It is not read';

Get recipients of a notification

You can also get all the recipients of a notification

$notification::recipients;
$notification::recipients->take(2)->get();

Complex queries

For more complex queries, you can return a Builder object by using query(). Easy, right?

Notification::query()->orderBy('timestamp', 'desc')->take(2)->get();