JamesMills/watchable

一个让您的模型可以被用户监视的包

1.3.1 2021-02-18 09:52 UTC

This package is auto-updated.

Last update: 2024-09-18 17:32:43 UTC


README

Packagist Packagist Travis Packagist Buy us a tree Treeware (Trees)

允许用户监视您的应用程序中的各种模型。

  • 专为与Laravel Eloquent模型一起使用而设计
  • 只需将特性添加到您希望可监视的模型中
  • 监视对于每个模型和每个用户都是唯一的
  • watchedunwatched 方法上触发事件
  • 与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森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。