gorankrgovic / laravel-reviewable
使用 UUIDs 使 Laravel Eloquent 模型可审查。
Requires
- php: ^7.0
- illuminate/database: ~5.5.0|~5.6.0|~5.7.0|~5.8.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0
- ramsey/uuid: ^3.8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.10
- mockery/mockery: ^1.0
- orchestra/database: ~3.5.0|~3.6.0|~3.7.0
- orchestra/testbench: ~3.5.0|~3.6.0|~3.7.0
- phpunit/phpunit: ^6.0|^7.0|^7.5
README
简介
此包为您的模型添加了可审查的能力。基本上,是为您的应用程序添加一个审查系统。
此外,值得注意的是,此包使用 UUIDs 而不是整数 ID。并且“可喜欢”和“喜欢者”模型也需要使用 UUIDs。如果您不使用 UUIDs,请随意分支此包以创建一个非 UUID 版本。
对于 UUID 生成,此包使用 Ramsey UUID。
特性
- 使用 UUIDs 而不是整数(您的用户模型也必须使用它们!)
- 设计用于与 Laravel Eloquent 模型协同工作。
- 使用合约以保持高度的定制能力。
- 使用特性以获得开箱即用的功能。
- 大部分逻辑由
ReviewableService
处理。 - 对单个模型的订阅是互斥的。
- 按评论数获取可审查模型。
- 按评论平均评分获取可审查模型。
- 为
review
、unreview
方法提供事件。 - 遵循 PHP 标准建议
安装
首先,通过 Composer 拉取此包。
$ composer require gorankrgovic/laravel-reviewable
执行数据库迁移
最后,您需要发布并运行数据库迁移。
$ php artisan migrate
如果您想更改迁移,请首先将它们发布到您的应用程序中。
$ php artisan vendor:publish --provider="Gox\Laravel\Reviewable\Providers\ReviewableServiceProvider" --tag=migrations
用法
准备审查者模型
在将获取点赞行为的模型中使用 Gox\Contracts\Reviewable\Reviewer\Models\Reviewer
合约,并实现它,或者只需使用 Gox\Laravel\Reviewable\Reviewer\Models\Traits\Reviewer
特性。
use Gox\Contracts\Reviewable\Reviewer\Models\Reviewer as ReviewerContract; use Gox\Laravel\Reviewable\Reviewer\Models\Traits\Reviewer; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements ReviewerContract { use Reviewer; }
准备可审查模型
在将获取点赞行为的模型中使用 Gox\Contracts\Reviewable\Reviewable\Models\Reviewable
合约,并实现它,或者只需使用 Gox\Laravel\Reviewable\Revieable\Models\Traits\Reviewable
特性。
use Gox\Contracts\Reviewable\Reviewable\Models\Reviewable as ReviewableContract; use Gox\Laravel\Reviewable\Revieable\Models\Traits\Reviewable; use Illuminate\Database\Eloquent\Model; class Article extends Model implements ReviewableContract { use Reviewable; }
可用方法
评论
评论模型
// stars can be from 1 to 5 // Comment can be null $user->review($article, $star, $comment); $user->reviewPoor($article, $comment); $user->reviewBad($article, $comment); $user->reviewOk($article, $comment); $user->reviewGood($article, $comment); $user->reviewGreat($article, $comment); $article->reviewBy($star, $comment); // current user $article->reviewBy($star, $comment, $user->id);
从模型中移除评论标记
$user->unreview($article); $article->unreviewBy(); // current user $article->unreviewBy($user->id);
获取模型评论数
$article->reviewsCount;
获取模型评论平均分
$article->reviewsAverage;
获取模型评论计数器
$article->reviewsCounter;
获取评论关系
$article->reviews();
布尔检查用户是否评论了模型
$user->hasReviewed($article); $article->reviewed; // current user $article->isReviewedBy(); // current user $article->isReviewedBy($user->id);
删除模型的所有评论
$article->removeReviews();
作用域
查找用户评论的所有文章
Article::whereReviewedBy($user->id) ->with('reviewsCounter') // Allow eager load (optional) ->get();
按评论数获取可审查模型
$sortedArticles = Article::orderByReviewsCount()->get(); $sortedArticles = Article::orderByReviewsCount('asc')->get(); $sortedArticles = Article::orderByReviewsAvg()->get(); $sortedArticles = Article::orderByReviewsAvg('asc')->get();
默认使用 desc
作为排序方向。
事件
每当添加点赞时,将触发 \Gox\Laravel\Reviewable\Reviewable\Events\ReviewableWasReviewed
事件。
每当移除点赞时,将触发 \Gox\Laravel\Reviewable\Reviewable\Events\ReviewableWasUnreviewed
事件。
安全
如果您发现任何安全相关的问题,请通过电子邮件联系我,而不是使用问题跟踪器。
许可证
Laravel Reviewable
包是开源软件,由 Goran Krgovic 根据 MIT 许可证 许可。