GitHub - jamesmills/watchable: Enable users to watch various models in your appl...
source link: https://github.com/jamesmills/watchable
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Laravel Watchable
Enable users to watch various models in your application.
- Designed to work with Laravel Eloquent models
- Just add the trait to the model you would like to be watchable
- Watches are unique for one model and one user
- Events are fired on
watched
andunwatched
methods - Built to work with Laravel Notifications
Installation
Pull in the package using Composer
composer require jamesmills/watchable
Note: If you are using Laravel 5.5, the next step for provider are unnecessary. Laravel Watchable supports Laravel Package Discovery.
Include the service provider within app/config/app.php
.
'providers' => [
...
JamesMills\Watchable\WatchableServiceProvider::class,
],
Publish and run the database migrations
php artisan vendor:publish --provider="JamesMills\Watchable\WatchableServiceProvider" --tag="migrations"
php artisan migrate
Sample Usage and Boilerplate
I wrote a blog post to give you some boilerplate code that you can use in your application to wrap around the Laravel Watchable package.
https://jamesmills.co.uk/2017/10/22/laravel-watchable-package
How to use
Prepare your model to be watched
Simply add the watchable
trait to your model
use Illuminate\Database\Eloquent\Model;
use JamesMills\Watchable\Traits\Watchable;
class Book extends Model {
use Watchable;
}
Available methods
Watch a model
$book = Book::first();
$book->watch();
Unwatch a model
$book = Book::first();
$book->unwatch();
Toggle the watching of a model
$book = Book::first();
$book->toggleWatch();
You can optionally send the $user_id
if you don't want to use the built in auth()->user()->id
functionality.
$book = Book::first();
$book->watch($user_id);
$book->unwatch($user_id);
$book->toggleWatch($user_id);
Find out if the current user is watching the model
@if ($book->isWatched())
{{ You are watching this book }}
@else
{{ You are NOT watching this book }}
@endif
Get a collection of the user who are watching a model
$book = Book::first();
$book->collectWatchers();
Use with Notifications
One of the main reasons I built this package was to scratch my own itch with an application I am building. I wanted to be able to send notifications to user who were watching a given model and I also wanted to allow users to be able to watch a number of different models.
public function pause(Order $order)
{
$this->performAction('paused', $order);
Notification::send($order->collectWatchers(), new OrderPaused($order));
}
License
This package is 100% free and open-source, under the MIT license. Use it however you want.
This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK