daydevelops / vote
为 Laravel 应用程序构建的包,允许对项目进行投票。可以对项目进行点赞或踩,这些操作将计入总分数。
Requires
Requires (Dev)
- doctrine/dbal: ^2.5
- fzaninotto/faker: ~1.4
- laravel/laravel: ~7.0 | ~6.0
- mockery/mockery: ^1.1
- orchestra/testbench: ~3|~4
- phpunit/phpunit: ^8.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-09-27 22:23:12 UTC
README
此包为您的 Laravel 项目提供了创建和管理用户创建内容的点赞/踩系统。该项目灵感来源于 Reddit 的 Karma。
本包的主要特性
此包将为您提供 2 个迁移表,用于创建投票表(dd_votes)和投票者表(dd_voters)。
您还将获得访问两个特性的权限
Votable -> 为可投票对象(如博客文章、评论、照片等)添加点赞和踩功能,这些对象有一个代表所有者的 user_id。
CanVote -> 应用于您的 User 模型。为您的用户添加了额外的功能,使他们能够管理自己的投票能力,并提供一个可投票的分数(从其他用户投给他们的可投票对象的投票中计算得出)。
您还可以访问两个模型 Vote 和 Voter。
将配置文件 vote.php 发布到您的配置目录。
安装
通过 Composer
$ composer require daydevelops/vote $ php artisan vendor:publish $ php artisan migrate
使用方法
应用 Votable 特性
假设我们有一个博客,用户可以创建评论。如果我们想允许用户对评论进行点赞和踩,我们只需添加 Votable 特性。
... use Daydevelops\Vote\Traits\Votable; class Comment extends Model { use Votable; ... }
应用 CanVote 特性
应将 CanVote 特性应用于您的 User 模型。
... use Daydevelops\Vote\Traits\CanVote; class User extends Model { use CanVote; ... }
可用的 Votable 对象方法/属性
认证用户投下投票
$this->vote($type); // $type should be "up" or "down"
认证用户投下点赞
$this->upVote(); // alias of $this->vote('up');
认证用户投下踩
$this->downVote(); // alias of $this->vote('down');
认证用户移除投票
$this->unVote();
认证用户是否对此对象进行了投票?
$this->hasVoted();
认证用户是否对此对象进行了点赞?
$this->hasUpVoted();
认证用户是否对此对象进行了踩?
$this->hasDownVoted();
获取对此对象的所有投票的集合
$this->votes(); // hasMany relationship
获取对此对象投下的所有投票的总分数
$this->score;
可用的 CanVote(用户)对象方法/属性
此用户是否有投票记录?
$this->isVoter();
获取此用户的投票对象
$this->voter; // returns hasOne relationship to Daydevelops\Vote\Models\Voter
为此用户创建投票记录
$this->makeVoter($change); // optional signed int $change is added to the default voter weight (see config/vote.php) upon creation
获取其他用户投给此用户的投票计算出的分数
$this->votable_score;
可用的 Voter 模型方法/属性
其中 $voter = $user->voter;
更改投票者未来投票的权重
$voter->addWeight($change); // signed int $change is added to the users current vote weight.
投票者是否可以对此对象进行投票?
$voter->canVote($votable_item);
投票者是否被禁止投票?
$voter->isBanned();
禁止或解禁投票者
$voter->ban();
$voter->unban();
事件
Daydevelops\Vote\Events\ItemUpVoted -> 当可投票对象被点赞时触发
Daydevelops\Vote\Events\ItemDownVoted -> 当可投票对象被踩时触发
Daydevelops\Vote\Events\VoterWeightChanged -> 当投票者的投票权重更新时触发
测试
有关此包功能的任何进一步说明,请参阅测试或联系包的维护者。
贡献
有关详细信息和工作清单,请参阅 contributing.md。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 adamday@daydevelops.com 而不是使用问题跟踪器。
鸣谢
许可证
麻省理工学院。请参阅许可文件以获取更多信息。