compubel / laravel-rating
将评分关联到任何Eloquent模型
1.3.0
2021-07-29 08:37 UTC
Requires
- php: ^7.2|^8.0
- illuminate/support: 5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~8.0
- sempro/phpunit-pretty-print: ^1.0
README
将评分关联到任何Eloquent模型。
此包基于rennokki/rating并做了一些改进
- 错误修正
- 异常
- 评分总和
- 更多测试
安装
使用Composer安装此包
$ composer require compubel/laravel-rating
该包将自动注册自身。
如果您的Laravel安装不支持包发现,请在config/app.php文件中的providers数组中添加此行
Compubel\Rating\RatingServiceProvider::class,
可选:如果要将表名更改为“ratings”以外的其他名称,可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Compubel\Rating\RatingServiceProvider" --tag="config"
使用以下命令发布迁移
php artisan vendor:publish --provider="Compubel\Rating\RatingServiceProvider" --tag="migrations"
迁移发布后,可以通过运行迁移来创建评分表
php artisan migrate
用法
准备模型
要允许模型对其他模型进行评分,它应该使用CanRate
特性并实现Rater
协议。
use Compubel\Rating\CanRate; use Compubel\Rating\Contracts\Rater; class User extends Model implements Rater { use CanRate; // ... }
每个可以评分的模型应该使用CanBeRated
特性并实现Rateable
协议。
use Compubel\Rating\CanBeRated; use Compubel\Rating\Contracts\Rateable; class Post extends Model implements Rateable { use CanBeRated; // ... }
如果您的模型既能评分也能被评分,应使用Rate
特性和Rating
协议。
use Compubel\Rating\Rate; use Compubel\Rating\Contracts\Rating; class Member extends Model implements Rating { use Rate; // ... }
评分模型
要评分其他模型,只需调用rate()
方法。将评分分数作为rate()
方法的第二个参数。它可以是字符串、整数或浮点数。
$user->rate($post, 10); $post->averageRating(User::class); // 10.0, as float
如果您想确保模型只评分一次,请在rate()
方法的第三个参数中添加false
。
$user->rate($post, 10, false);
使用hasRated()
方法检查模型是否已评分。
$user->rate($post, 10); $user->hasRated($post); // true
使用averageRating()
方法获取模型的平均评分。将评分者的类名作为参数传递。返回值是所有评分的算术平均值,以float
形式。
$user->rate($post, 10); $post->averageRating(User::class); // 10.0, as float
使用countRatings()
方法获取评分计数。
$user->rate($post, 10); $user->rate($post, 10); $post->countRatings(User::class); // 2, as integer
测试
您可以使用以下命令运行测试
$ composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件jasper@compubel.be联系,而不是使用问题跟踪器。
替代方案
致谢
许可证
MIT。请参阅许可证文件以获取更多信息。