JamesMills / watchable
一个让您的模型可以被用户监视的包
1.3.1
2021-02-18 09:52 UTC
Requires
- php: ^7.0
- illuminate/support: ~5.3.0 || ~5.4.0 || ~5.5.0 || 5.6.* || 5.7.* || 5.8.* || ^6 || ^7 || ^8
Requires (Dev)
README
允许用户监视您的应用程序中的各种模型。
- 专为与Laravel Eloquent模型一起使用而设计
- 只需将特性添加到您希望可监视的模型中
- 监视对于每个模型和每个用户都是唯一的
- 在
watched
和unwatched
方法上触发事件 - 与Laravel通知一起构建
安装
使用Composer引入此包
composer require jamesmills/watchable
注意:如果您使用Laravel 5.5,则提供者的下一步是不必要的。Laravel Watchable支持Laravel 包发现。
在 app/config/app.php
中包含服务提供者。
'providers' => [ ... JamesMills\Watchable\WatchableServiceProvider::class, ],
发布并运行数据库迁移
php artisan vendor:publish --provider="JamesMills\Watchable\WatchableServiceProvider" --tag="migrations" php artisan migrate
示例用法和样板
我写了一篇博客文章,为您提供一些样板代码,您可以在应用程序中使用它来围绕Laravel Watchable包进行包装。
https://jamesmills.co.uk/2017/10/22/laravel-watchable-package
如何使用
准备您的模型以供监视
简单地将 watchable
特性添加到您的模型中
use Illuminate\Database\Eloquent\Model; use JamesMills\Watchable\Traits\Watchable; class Book extends Model { use Watchable; }
可用方法
监视模型
$book = Book::first(); $book->watch();
取消监视模型
$book = Book::first(); $book->unwatch();
切换模型的监视状态
$book = Book::first(); $book->toggleWatch();
您可以选择发送 $user_id
,如果您不想使用内置的 auth()->user()->id
功能。
$book = Book::first(); $book->watch($user_id); $book->unwatch($user_id); $book->toggleWatch($user_id);
确定当前用户是否在监视模型
@if ($book->isWatched()) {{ You are watching this book }} @else {{ You are NOT watching this book }} @endif
获取监视某个模型的用户集合
$book = Book::first(); $book->collectWatchers();
与通知一起使用
我构建此包的主要原因是满足我自己在构建的应用程序中的需求。我希望能够向监视特定模型的用户发送通知,并且我还希望允许用户能够监视多个不同的模型。
public function pause(Order $order) { $this->performAction('paused', $order); Notification::send($order->collectWatchers(), new OrderPaused($order)); }
许可
此包100%免费且开源,受MIT许可证约束。随意使用。
此包是Treeware。如果您将其用于生产,那么我们要求您为世界买一棵树以感谢我们的工作。通过为Treeware森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。