gorankrgovic/laravel-reviewable

使用 UUIDs 使 Laravel Eloquent 模型可审查。

v0.1.5 2019-03-17 09:15 UTC

This package is auto-updated.

Last update: 2024-09-17 21:41:16 UTC


README

简介

此包为您的模型添加了可审查的能力。基本上,是为您的应用程序添加一个审查系统。

此外,值得注意的是,此包使用 UUIDs 而不是整数 ID。并且“可喜欢”和“喜欢者”模型也需要使用 UUIDs。如果您不使用 UUIDs,请随意分支此包以创建一个非 UUID 版本。

对于 UUID 生成,此包使用 Ramsey UUID

特性

  • 使用 UUIDs 而不是整数(您的用户模型也必须使用它们!)
  • 设计用于与 Laravel Eloquent 模型协同工作。
  • 使用合约以保持高度的定制能力。
  • 使用特性以获得开箱即用的功能。
  • 大部分逻辑由 ReviewableService 处理。
  • 对单个模型的订阅是互斥的。
  • 按评论数获取可审查模型。
  • 按评论平均评分获取可审查模型。
  • reviewunreview 方法提供事件。
  • 遵循 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 许可证 许可。